2017-01-03 18 views
0

以下のようなmongodbドキュメント構造を作成します。MongoDBの配列のサブ配列に要素を追加する

data:[[{a:b},{b:c}],[{e:f}],[{f:g},{j:h},{i:l}]] 

この構造は、必要であれば、私は、新たなサブ配列要素、上記の例では三つのサブ配列を含む既存のデータ・アレイに4を追加することを可能にします。

mongodbシェルからbelowコマンドを使用して新しいサブアレイ要素を追加できました。

db.xyz.update({'id':'A01'},{$push:{data:[]}},{}) 

しかし、それぞれの配列にデータをプッシュするための解決策を見つけることができません。次のコマンドは機能しません。

db.xyz.update({'id':'A01'},{$push:{data[0]:{$push:{a:b}}}},{}) 

答えて

0

単一の$プッシュで十分です。代わりにこれを試してみてください:

db.xyz.update({'id':'A01'}, {$push: {"data.0": {a: "b"}}}) 

結果:

{ 
    "_id":ObjectId("586b907a4979a26deaacf4ad"), 
    "data":[ 
     [ 
     { 
      "a":"b" 
     }, 
     { 
      "b":"c" 
     }, 
     { 
      "a":"b" 
     } 
     ], 
     [ 
     { 
      "e":"f" 
     } 
     ], 
     [ 
     { 
      "f":"g" 
     }, 
     { 
      "j":"h" 
     }, 
     { 
      "i":"l" 
     } 
     ] 
    ] 
} 
+0

そして、データの最初の配列の最初の要素を取得するために、私は({ 'ID': 'A01'} db.xyz.findをしようとしています、{ data.0:{$ slice:1}})でも取得できません。最初の配列の最初の要素を取得する方法をdb.xyz.find({id: 'A01'}、{data:{slice:1}})しようとしている間、最初の配列のすべての配列要素を取得しています。 –

+0

@SatyaNarayanaこのようにすることができます:db.xyz.aggregate([{$ match:{_id: "A01"}}、{$ project:{data:{$ arrayElemAt:[{$ arrayElemAt:["$ data "、0]}、0]}}}]) – felix

+0

ありがとうございました。 –

関連する問題