在我的MongoDB中,我有Document1,如下所示。我想到達「main.accounts」(及後面的「main.entries」)文檔,並更新($ set)「content」數組中的整個子文檔。到目前爲止,我的子文檔已經能夠在「內容」子數組中添加和刪除文檔,但是在這種情況下,我想更新整個文檔;而不僅僅是更新($ set)匹配文檔中的一個屬性。我試過只用$ set,$ set用$ elemMatch,而且我也試過findAndModify,但是無濟於事。當然,我有我)RTFM,看着周圍的所有人ii)互聯網及iii)SO,找到解決的辦法。任何人都已經能夠以這種方式來更新整個文檔?
感謝 添
更新嘗試1 - 這是唯一可行的更新,而是將整個「內容」數組到哈希... {「福」:「酒吧」}
db.bookkeeping.update( { owner : "[email protected]", "content.content.tag" : "account", "content.content.id" : "one" }, { $set : { "content.$.content" : { "fu" : "bar" } } } )
更新嘗試2 - 這並不失敗,但不更新有問題的文檔
db.bookkeeping.update( { owner : "fu", thing : { $elemMatch : { "content.content.tag" : "account", "content.content.id" : "one" } } }, { $set : { "thing" : { "fu" : "bar" } } } )
更新嘗試3 - 這並沒有失敗,但在問題
012不更新文檔db.bookkeeping.update( { thing : { $elemMatch : { owner : "fu" , "content.content.tag" : "account", "content.content.id" : "one" } } }, { $set : { "thing.content.content.$" : { "fu" : "bar" } } } )
文檔1
{ "_id" : "fid", "content" : [ { "content" : [ { "id" : "one", "tag" : "account" }, { "id" : "two", "tag" : "account" }, { "id" : "three", "tag" : "account" }, { "id" : "four", "tag" : "account" }, { "id" : "five", "tag" : "account" } ], "id" : "main.accounts", "tag" : "accounts" }, { "tag" : "journals", "id" : "main.journals", "content" : [ { "tag" : "journal", "id" : "generalledger", "name" : "generalledger", "type" : "", "balance" : "", "content" : [ { "tag" : "entries", "id" : "main.entries", "content" : [ ] } ] } ] } ], "owner" : "fu", "tag" : "fubar" }
要更新哪個文檔。這個問題困惑。你爲什麼一直在討論更新($ set)? – c0deNinja
我試圖更新對象:'{「id」:「one」,「tag」:「account」}'。我的意思是在功能上,我想更新所述文件。我試圖用$ set操作符來做到這一點。心連心。 – Nutritioustim