Mik*_* B. 41 crud mongodb mongodb-query
MongoDB批量操作有两个选项:
将单个文档更新操作添加到批量操作列表.该操作可以替换现有文档或更新现有文档中的特定字段.
将单个文档替换操作添加到批量操作列表.使用此
Bulk.find()方法指定确定要替换的文档的条件.该Bulk.find.replaceOne()方法将替换限制为单个文档.
根据文档,这两种方法都可以替换匹配的文档.我是否理解正确,这updateOne()是更通用的方法,可以完全替换文档replaceOne(),还是只更新其特定字段?
Hug*_*hzi 50
随着replaceOne()你只能更换整个文档,同时updateOne()允许更新领域.
由于replaceOne()替换了整个文档 - 旧文档中未包含在新文档中的字段将丢失.随着updateOne()可在不老的文档中丢失的领域增加新的领域.
例如,如果您有以下文档:
{
"_id" : ObjectId("0123456789abcdef01234567"),
"my_test_key3" : 3333
}
Run Code Online (Sandbox Code Playgroud)
使用:
replaceOne({"_id" : ObjectId("0123456789abcdef01234567")}, { "my_test_key4" : 4})
Run Code Online (Sandbox Code Playgroud)
结果是:
{
"_id" : ObjectId("0123456789abcdef01234567"),
"my_test_key4" : 4.0
}
Run Code Online (Sandbox Code Playgroud)
使用:
updateOne({"_id" : ObjectId("0123456789abcdef01234567")}, {$set: { "my_test_key4" : 4}})
Run Code Online (Sandbox Code Playgroud)
结果是:
{
"_id" : ObjectId("0123456789abcdef01234567"),
"my_test_key3" : 3333.0,
"my_test_key4" : 4.0
}
Run Code Online (Sandbox Code Playgroud)
请注意,updateOne()您可以在文档上使用更新运算符.
Jur*_*dom 14
replaceOne()替换整个文档,同时updateOne()允许更新或添加字段。使用时,updateOne()您还可以访问可以可靠地对文档执行更新的更新操作符。例如,两个客户端可以“同时”在同一文档中的同一字段上增加一个值,并且两个增量都将被捕获,而替换一个可能会覆盖另一个可能丢失其中一个增量。
由于replaceOne()替换了整个文档 - 旧文档中未包含在新文档中的字段将丢失。随着updateOne()可在不老的文档中丢失的领域增加新的领域。
例如,如果您有以下文档:
{
"_id" : ObjectId("0123456789abcdef01234567"),
"my_test_key3" : 3333
}
Run Code Online (Sandbox Code Playgroud)
使用:
replaceOne({"_id" : ObjectId("0123456789abcdef01234567")}, { "my_test_key4" : 4})
Run Code Online (Sandbox Code Playgroud)
结果是:
{
"_id" : ObjectId("0123456789abcdef01234567"),
"my_test_key4" : 4.0
}
Run Code Online (Sandbox Code Playgroud)
使用:
updateOne({"_id" : ObjectId("0123456789abcdef01234567")}, {$set: { "my_test_key4" : 4}})
Run Code Online (Sandbox Code Playgroud)
结果是:
{
"_id" : ObjectId("0123456789abcdef01234567"),
"my_test_key3" : 3333.0,
"my_test_key4" : 4.0
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
25880 次 |
| 最近记录: |