MongoDb db.Collection.update()删除了我的文档

时间:2016-07-31 21:20:36

标签: mongodb robo3t

我在snake_case数据库上运行update语句,它删除了我的文档!我做错了什么?

这是更新声明:

mongodb

我正在使用db.Question.update( {Name: "IsSomeCompany"}, {ButtonValues: [0, 1, 2] } ) 并且回复是Robomongo但是当我检查数据库时,记录消失了。我在这里错过了什么?

2 个答案:

答案 0 :(得分:6)

我使用此语法更新多个文档。

db.getCollection('YourDocument').update(
   { "matchingField" : "matchingValue"}, 
   { "$set": { "field": "value" } }, 
   { "multi": true } 
)

https://docs.mongodb.com/manual/tutorial/update-documents/

答案 1 :(得分:3)

如果您尝试仅更新一个字段,则应使用$ set运算符。 但是如果你想要的是替换文件我和Mongo和Meteor有同样的问题。我在Mongo文档中发现要替换文档,你不需要使用$运算符,只传递字段/值对:

  

以下操作传递仅包含字段和值对的文档。除了_id字段外,该文档完全替换原始文档。

db.books.update({ item: "XYZ123" },
    {
     item: "XYZ123",
     stock: 10,
     info: { publisher: "2255", pages: 150 },
     tags: [ "baking", "cooking" ]
    })

https://docs.mongodb.com/manual/reference/method/db.collection.update/#example-update-replace-fields

但是在Robomongo和Meteor方法中都删除了文档。

我找到的唯一方法是使用$ set运算符并替换每个字段。但是这会尝试更新mongo'_id',所以我认为只是一种解决方法......

db.books.update({ item: "XYZ123" },
    {
      $set: {
        item: "XYZ123",
        stock: 10,
        info: { publisher: "2255", pages: 150 },
        tags: [ "baking", "cooking" ]
      }
    })

我在这里缺少什么? :/