2016-02-15 75 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

這是完美的,我有一個腦屁。我忘了投影參數。非常感謝! –