我在mongodb
数据库上运行了update
语句,它删除了我的文档!我做错了什么?MongoDb db.Collection.update()删除了我的文档
这是更新语句:
db.Question.update({Name: "IsSomeCompany"}, {ButtonValues: [0, 1, 2] })
我使用Robomongo
和得到的答复是Updated 1 record(s) in 22ms
但是当我检查了数据库中的记录就不见了。我在这里错过了什么?
我在mongodb
数据库上运行了update
语句,它删除了我的文档!我做错了什么?MongoDb db.Collection.update()删除了我的文档
这是更新语句:
db.Question.update({Name: "IsSomeCompany"}, {ButtonValues: [0, 1, 2] })
我使用Robomongo
和得到的答复是Updated 1 record(s) in 22ms
但是当我检查了数据库中的记录就不见了。我在这里错过了什么?
我使用这种语法来更新多个文档。
db.getCollection('YourDocument').update(
{ "matchingField" : "matchingValue"},
{ "$set": { "field": "value" } },
{ "multi": true }
)
如果要更新只有一个字段,你应该使用$集合运算符。 但是,如果你想要的是替换文件,我与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和流星方法这让删除的文件。
我发现的唯一方法是使用$ set操作符并替换每个字段。但这将尝试更新蒙戈“_id”,所以我觉得只是一个解决办法...
db.books.update({ item: "XYZ123" },
{
$set: {
item: "XYZ123",
stock: 10,
info: { publisher: "2255", pages: 150 },
tags: [ "baking", "cooking" ]
}
})
缺少什么我在这里? :/
“记录”是什么意思?它应该是文档字段还是整个文档?那么,你知道你的更新查询没有任何'$ set'或'$ unset'运算符吗? – felipsmartins
您*用{{ButtonValues:[0,1,2]}'替换了与{{Name:“IsSomeCompany”}'标准匹配的文档。如果您打算更新匹配文档的部分内容,请使用'$ set'运算符。 –
您使用的工具在这种情况下无关紧要。我使用这个语法来更新多个文档。 。db.getCollection( 'YourDocument')更新( { “matchingField”: “matchingValue”},{ $设置:{ “场”: “值”}} , {多:真} ) – Hamedz