2017-04-27 107 views
0

可以說我有類似以下如何獲取嵌入式文檔中的單個字段?

{ 
"_id" : 1, 
"name" : "sue", 
"age" : 19, 
"type" : 1, 
"status" : "P", 
"favorites" : { 
    "artist" : "Picasso", 
    "food" : "pizza" 
}, 
"finished" : [ 
    17, 
    3 
], 
"badges" : [ 
    "blue", 
    "black" 
], 
"points" : [ 
    { 
     "points" : 85, 
     "bonus" : 20 
    }, 
    { 
     "points" : 85, 
     "bonus" : 10 
    } 
] 

}

當我運行查詢像db.users.find({ favorites: { artist: "Picasso", food: "pizza" } }, { "favorites.food": 1 }).pretty()

我得到以下結果

{ "_id" : 1, "favorites" : { "food" : "pizza" } } 

文檔是否有可能只拿到food字段like

{ 「食品」: 「比薩」}

沒有favorites關鍵?

回答

0

就可以實現這一點使用聚合與$project

db.users.aggregate([ 
    { 
     $match:{ 
     favorites:{ 
      artist:"Picasso", 
      food:"pizza" 
     } 
     } 
    }, 
    { 
     $project:{ 
     _id:0, 
     food:"$favorites.food" 
     } 
    } 
]) 
+0

我得到空文件,比如'{}' –

+0

感謝的人,可以ü請告訴我diffference之間'aggregate'和'find'如果可能的話 –

+0

@ N.HariHaraSudhan聚合類似於find(),但它允許您實現更復雜的查詢/文檔重新格式化;請參閱[聚合](https://docs.mongodb.com/manual/aggregation/)以獲取詳細信息 – felix

相關問題