$update と $elemMatch を使用して、Level3 配列内の単一のドキュメント フィールドを更新することは可能ですか? この場合、位置演算子を複数回使用できないことに気づきました。歴史的に、これらのドキュメントはそれほど大きくないため、必要なより深い変更を加えて Level2 のネストされたドキュメントを変更しました。$elemMatch を使用して、Level3 配列内のターゲット ドキュメントの位置や Level2 内のドキュメントを含むドキュメントを知らなくても、Level3 配列ドキュメントを更新できる構文があることを願っています。
例:
db.collection.update({_id:'123', level2:{$elemMatch:{'level3.id':'bbb','level3.e1':'hij'}},{'level2.level3.createdDate':new Date()})
{
_id:'123',
f1:'abc',
f2:'def',
level2:[
{_
id:'aaa',
e1:'hij',
e2:'lmo'
level3:[
{
name:'foo',
type:'bar',
createdDate:'2013-3-28T05:18:00'
}]
},
{_
id:'bbb',
e1:'hij',
e2:'lmo'
level3:[
{
name:'foo2',
type:'bar2',
createdDate:'2013-3-28T05:19:00'
}]
}
]
}