以下に示すように、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",
"コンテンツ" : [ ]
}
]
}
]
}
]、
"所有者" : "ふ",
"タグ" : "フバー"
}