В моем MongoDB у меня есть Document1, как показано ниже. Я хочу обратиться к документу «main.accounts» (а затем и «main.entries») и обновить ($ set) весь поддокумент в массиве «content». Поддокументы Wrt до сих пор я «Мне удалось обновить весь документ, а не просто обновить ($ set) одно свойство в совпадающем документе.
Ниже я попытался использовать только $ set, $ set с $ elemMatch. И я также попробовал findAndModify, но безуспешно. Конечно, у меня есть) RTFM, посмотрел вокруг ii) интернет и III) SO, чтобы найти решение. кто-нибудь был в состоянии обновить весь документ таким образом?
Благодаря Тим
Update попробовать 1 - это единственное обновление, которое работает, но устанавливает все "содержимое" массив в хэш ... { "фу": "бар"}
db.bookkeeping.update( { owner : "[email protected]", "content.content.tag" : "account", "content.content.id" : "one" }, { $set : { "content.$.content" : { "fu" : "bar" } } } )
Update попробовать 2 - это не обязательно, но не обновляет документ в вопросе
db.bookkeeping.update( { owner : "fu", thing : { $elemMatch : { "content.content.tag" : "account", "content.content.id" : "one" } } }, { $set : { "thing" : { "fu" : "bar" } } } )
Update попробовать 3 - это не обязательно, но не обновляет документ в вопросе
db.bookkeeping.update( { thing : { $elemMatch : { owner : "fu" , "content.content.tag" : "account", "content.content.id" : "one" } } }, { $set : { "thing.content.content.$" : { "fu" : "bar" } } } )
Document1
{ "_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. Hth. – Nutritioustim