4

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

这是更新声明:

db.Question.update( {Name: "IsSomeCompany"}, {ButtonValues: [0, 1, 2] } )

我正在使用Robomongo,回复是,Updated 1 record(s) in 22ms但是当我检查数据库时,记录已经消失了。我在这里想念什么?

4

2 回答 2

11

我使用这种语法来更新多个文档。

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

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

于 2016-08-01T07:24:13.633 回答
4

如果您尝试仅更新一个字段,则应使用 $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" ]
      }
    })

我在这里想念什么?:/

于 2017-01-12T20:18:53.287 回答