将元素推入数组

时间:2016-11-14 07:54:54

标签: arrays mongodb mongodb-update

我有一个名为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)遍历元素的错误消息,那么我应该如何将该元素添加到数组中呢?

1 个答案:

答案 0 :(得分:1)

mongodb positional/$ 位置$运算符标识要更新的数组中的元素,而不显式指定元素在数组中的位置。要从读取操作中投影或返回数组元素,请参阅$ projection运算符。

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