MongoDB批量操作有两个选择:

  • Bulk.find.updateOne()

  • Bulk.find.replaceOne()


  • 根据文档,这两种方法都可以替换匹配的文档。我是否正确理解updateOne()是更通用的方法,它可以像replaceOne()一样完全替换文档,也可以只更新其特定字段?

    最佳答案

    使用replaceOne(),您只能替换整个文档,而updateOne()则允许更新字段。

    由于replaceOne()替换了整个文档-新文档中未包含的旧文档中的字段将丢失。使用updateOne()可以添加新字段,而不会丢失旧文档中的字段。

    例如,如果您具有以下文档:

    {
       "_id" : ObjectId("0123456789abcdef01234567"),
       "my_test_key3" : 3333
    }
    

    使用:
    replaceOne({"_id" : ObjectId("0123456789abcdef01234567")}, { "my_test_key4" : 4})
    

    结果是:
    {
       "_id" : ObjectId("0123456789abcdef01234567"),
       "my_test_key4" : 4.0
    }
    

    使用:
    updateOne({"_id" : ObjectId("0123456789abcdef01234567")}, {$set: { "my_test_key4" : 4}})
    

    结果是:
    {
       "_id" : ObjectId("0123456789abcdef01234567"),
       "my_test_key3" : 3333.0,
       "my_test_key4" : 4.0
    }
    

    请注意,使用updateOne()可以在文档上使用update operators

    关于mongodb - MongoDB中的replaceOne()和updateOne()有什么区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35848688/

    10-09 20:16