是否可以使用 $update 和 $elemMatch 更新 Level3 数组中的单个文档字段?我意识到在这种情况下我不能多次使用位置运算符,并且从历史上看,我已经修改了 Level2 嵌套文档,并进行了所需的更深层次的更改,因为这些文档不是很大。我希望有一些语法可以使用 $elemMatch 更新 Level3 数组文档,而无需知道目标文档在 Level3 数组中的位置或在 Level2 中包含文档。
例子:
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'
}]
}
]
}