2016-09-19 14 views
0

このデータはMongoDBデータベースに格納されており、ブレードに関する2番目の配列のみを取得したいと考えています。MongoDBクエリが配列内に埋め込まれたドキュメント(3レベル)

{ 
"_id" : ObjectId("..."), 
"name" : "Westereems", 
"country" : "Netherlands", 
"turbines" : [ 
    { 
     "turbine_id" : ObjectId("..."), 
     "blades" : [ 
      { 
       "blade_id" : ObjectId("..."), 
       "position" : 2, 
       "size" : 50, 
      } 
     ] 
    } 
] 
} 

私は、blade_id、位置、サイズで1回の返品しか望みません。その後、このクエリを使用することができます

db.collection("windfarms").find({"turbines.blades.blade_id" : ObjectId("...")}, {"turbines.blades.$" : 1, "_id" : 0}) 

よろしく、

+0

問題の期待値を表示できますか? [ { "ブレード":[ { "blade_id":のObjectId( "57d28b433366a070b5934650")、 "位置":2、 "サイズ" 私はあなたがこの { "タービン" のような何かをしたい推測しています:50 } ] } ] } – abdulbarik

答えて

1

、それは大きな配列の項目のための最適なクエリではありませんが、あなただけのアイテムの上に持っている場合:私は、このクエリを試してみましたが、私は期待結果を持っていませんでしたそれを使うことができます。

あなたはaggregationといってより最適にすることもできます。

db.collection("windfarms").find({"turbines.blades.blade_id" : ObjectId("...")}, {"turbines.blades.blade_id":1,"turbines.blades.position":1,"turbines.blades.size":1,"_id":0}) 
関連する問題