2016-11-14 177 views
0

我有一個名爲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)來遍歷元素,所以我應該如何將元素添加到數組?

+0

您的意思是推送到所有a.a1? – kiro112

+0

@ kiro112沒有,所有條件a.id = 1 – HaiFengZeng

+0

@ kiro112它的工作原理!謝謝^ _ ^。 – HaiFengZeng

回答

1

mongodb positional/$ 位置$運算符標識數組中要更新的元素,而不顯式指定數組中元素的位置。要從讀取操作中投影或返回數組元素,請參閱$ projection操作符。

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