0
是否可以使用一次更新更新文檔的兩個子陣列(不檢索文檔並使用樂觀併發更新)?在一次更新中更新兩個子陣列
比方說,我有以下文件:
{ "_id" : 2,
"arr1" : [
{ "Id" : 10, "Value" : "abc" },
{ "Id" : 20, "Value" : "abc" },
{ "Id" : 30, "Value" : "abc" },
{ "Id" : 40, "Value" : "abc" },
{ "Id" : 50, "Value" : "abc" }
],
"arr2" : [
{ "Id" : 12, "Text" : "abc" },
{ "Id" : 22, "Text" : "abc" },
{ "Id" : 32, "Text" : "abc" },
{ "Id" : 42, "Text" : "abc" },
{ "Id" : 52, "Text" : "abc" }
]
}
我試圖做到這一點,但它似乎並沒有修改正確的子文檔:
db.col.update(
{ "_id": 2, arr1: { $elemMatch: { Id: 30 } }, arr2: { $elemMatch: {Id: 42} } },
{ $set: {
"arr1.$.Value": "Changed First",
"arr2.$.Text": "Changed Second"
}
})
似乎如果這是一個散列,它會b etter爲此更新提供服務。爲什麼它是一個散列而不是一個散列? – 2013-02-14 13:41:05
對不起,我不明白你的意思? – Flavien 2013-02-14 13:43:46
我的意思是,爲什麼你的結構不是這樣的:http://pastie.org/6163493? – 2013-02-14 13:46:38