我有一个名为test的集合,如下面的json:
{
'_id':ObjetcId("..."),
'a':[
{
id:1,
a1:[{x:1,y:1},{x:10,y:11},{x:10,y:12}],
flag:1
},
{
id:2
a1:[{x:1,y:1},{x:10,y:11},{x:10,y:12}],
flag:0
},
]
}
现在我想将另一个({x:99,y:99})
元素推送到a.a1
,条件为a.id=1
,我尝试了命令:
db.test.update({'_id':ObjectId('...')},{"$push":{"a.a1":{x:99,y:99}}})
并返回不能使用a.a1部分(a.a1)遍历元素的错误消息,那么我应该如何将该元素添加到数组中呢?
答案 0 :(得分:1)
mongodb positional/$ 位置$运算符标识要更新的数组中的元素,而不显式指定元素在数组中的位置。要从读取操作中投影或返回数组元素,请参阅$ projection运算符。
db.test.update({
_id: ObjectId('...'),
"a.id": 1
}, {
$push: {
"a.$.a1": { x: 99, y: 99 }
}
})