0

次のjsonのように見えるtestという名前のコレクションがあります。

{
   '_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)を使用して要素をトラバースできないというエラーメッセージを返すので、要素を配列に追加するにはどうすればよいですか?

4

1 に答える 1

1

mongodb positional/$ 位置 $ 演算子は、配列内の要素の位置を明示的に指定せずに、更新する配列内の要素を識別します。読み取り操作から配列要素を射影または返すには、$射影演算子を参照してください。

db.test.update({ 
    _id: ObjectId('...'),
    "a.id": 1 
}, { 
    $push: { 
        "a.$.a1": { x: 99, y: 99 } 
    } 
})
于 2016-11-14T08:05:30.660 に答える