2016-09-19 61 views
0

我有这个数据在我的MongoDB数据库,我想只得到有关刀片的第二个数组。MongoDB查询与嵌入式文档(3级)

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

我只想要一个返回与blade_id,位置和大小。我想这个查询,我没有可预期的结果:

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

问候,

+0

您可以显示您的期望值吗?我猜你想是这样的 { “涡轮”: { “刀片”: { “blade_id”:物件( “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})