これは可能ですか?属性 A1 の配列を持つコレクション C があります。各属性には、サブ属性 A2 の配列があります。
サブドキュメントを特定の C.A1 サブドキュメントに追加するにはどうすればよいですか?
これは可能ですか?属性 A1 の配列を持つコレクション C があります。各属性には、サブ属性 A2 の配列があります。
サブドキュメントを特定の C.A1 サブドキュメントに追加するにはどうすればよいですか?
ここに例があります。
db.docs.insert({_id: 1, A1: [{A2: [1, 2, 3]}, {A2: [4, 5, 6]}]})
挿入するサブドキュメントのインデックスがわかっている場合は、中間にインデックス (0 から開始) を含むドット表記を使用できます。
db.docs.update({_id: 1}, {$addToSet: {'A1.0.A2': 9}})
これにより、次の結果が得られます。
{
"A1" : [
{
"A2" : [
1,
2,
3,
9
]
},
{
"A2" : [
4,
5,
6
]
}
],
"_id" : 1
}
はい、$push を使用して同じことを行うことができます。以下のコードを試してください。
db.c.update({ A1: value }, { $push: { "A1.$.A2": num }});
はい、可能です。例を投稿すると、更新クエリがどのようになるかをより具体的に示すことができます。しかし、ここにショットがあります:
db.c.update({ A1: value }, { $addToSet: { "A1.$.A2": "some value" }})
私は実際にこれを試したことはありません (私は今、Mongo インスタンスの前にいません)。記憶を失っていますが、かなり近いものになるはずです。