2016-02-15 39 views
0

为简单起见,下面有一个简化的集合结构。我无法查询配置文件字段下的特定子文档。在mongodb中通过点符号查找子文档

例如,我想查找子文档“profiles.Bernie”。是否有一个find()查询将允许我只为Bernie检索文档(即Bernie的类别和ID)?道歉,如果这是一个重复的,但我无法找到迎合下面

{ 
     "_id" : ObjectId("56aec822ceb6e9dc23d32271"), 
     "sm_user" : "user1", 
     "profiles" : { 
       "Bernie" : { 
         "category" : "Politics", 
         "id" : "bernie" 
       }, 
       "Hilary" : { 
         "category" : "Politics", 
         "id" : "hilary" 
       } 
     } 
} 

回答

1

是这个集合的结构方式的解决方案,你可以选择只拿到Bernie子树和抑制通常包括_id;

db.test.find({},{ _id:0, "profiles.Bernie":1 }) 

包括领导到Bernie(又名profiles标签)的结构,但是仅仅使用数据从子树。

如果您不希望结构保留,也可以使用聚合框架将Bernie投影到输出文档的根目录;

db.test.aggregate([{$project: { _id:0, 'Bernie': "$profiles.Bernie"}}]) 
+1

这是完美的,我有一个脑屁。我忘了投影参数。非常感谢! –