将元素压入数组

push elements into array

我有一个名为 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}}})

和return报错不能使用a.a1的a部分遍历元素,请问如何将元素添加到数组中?

mongodb positional/$ 位置 $ 运算符标识数组中要更新的元素,而无需显式指定元素在数组中的位置。要投影或 return 来自读取操作的数组元素,请参阅 $ 投影运算符。

db.test.update({ 
    _id: ObjectId('...'),
    "a.id": 1 
}, { 
    $push: { 
        "a.$.a1": { x: 99, y: 99 } 
    } 
})