我在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