以下に示すように、MongoDB には Document1 があります。「main.accounts」(およびその後は「main.entries」) ドキュメントに到達し、「content」配列内のサブドキュメント全体を更新 ($set) したいと考えています。これまでのところ、サブドキュメントを書き込みます。 「コンテンツ」サブ配列に対してドキュメントを追加および削除できましたが、この場合、一致したドキュメントの 1 つのプロパティを更新 ($set) するだけでなく、ドキュメント全体を更新したいと考えています。
以下では、$set、$elemMatch を使用した $set のみを使用してみました。また、findAndModify も試しましたが、役に立ちませんでした。もちろん、私は解決策を見つけるために、i) RTFM、ii) インターネット、iii) SO を調べました。この方法でドキュメント全体を更新できた人はいますか?
ありがとうティム
更新試行 1 - これは機能する唯一の更新ですが、"content" 配列全体をハッシュに設定します … { "fu" : "bar" }
デシベル。簿記。更新( { 所有者: "twashing@gmail.com", "content.content.tag": "アカウント", "content.content.id": "1" }、 { $set : { "content.$.content" : { "fu" : "bar" } } } )
Update try 2 - これは失敗しませんが、問題のドキュメントは更新されません
デシベル。簿記。更新( { 所有者 : "fu", thing : { $elemMatch : { "content.content.tag" : "アカウント", "content.content.id" : "1つ" } } }、 { $set : { "モノ" : { "フー" : "バー" } } } )
Update try 3 - これは失敗しませんが、問題のドキュメントは更新されません
デシベル。簿記。更新( { もの : { $elemMatch : { 所有者 : "fu" , "content.content.tag" : "アカウント", "content.content.id" : "1 つ" } } }, { $set : { "thing.content.content.$" : { "fu" : "バー" } } } )
ドキュメント1
{ "_id": "fid", "コンテンツ" : [ { "コンテンツ" : [ { "やりました"、 「タグ」:「アカウント」 }、 { "id" : "2", 「タグ」:「アカウント」 }、 { "id": "3", 「タグ」:「アカウント」 }、 { "id" : "4", 「タグ」:「アカウント」 }、 { "id": "5", 「タグ」:「アカウント」 } ]、 "id" : "main.accounts", 「タグ」:「アカウント」 }、 { "タグ" : "ジャーナル", "id" : "main.journals", "コンテンツ" : [ { "タグ" : "ジャーナル", "id" : "総勘定元帳", "名前" : "総勘定元帳", "タイプ" : ""、 "残高" : ""、 "コンテンツ" : [ { "タグ" : "エントリ", "id": "main.entries", "コンテンツ" : [ ] } ] } ] } ]、 "所有者" : "ふ", "タグ" : "フバー" }