2015-07-10 96 views
0

在mongo中,我存儲具有字段「titleComposite」的對象。此字段包含標題對象的數組,像這樣:Mongo:只從嵌套對象中選擇一個字段

"titleComposite": [ 
"0": { 
     "titleType": "01", 
     "titleText": "Test cover uploading" 
     } 
] 

我perfoming查詢,我想爲返回值只接收「titleText」值。這裏是我的查詢的示例:

db.onix_feed.find({"addedBy":201, "mediaFileComposite":{$exists:false}}, {"isbn13":1,"titleComposite.titleText":1}) 

在結果我看到這樣

{ 
    "_id" : ObjectId("559ab286fa4634f309826385"), 
    "titleComposite" : [ { "titleText" : "The Nonprofit World" } ],   
    "isbn13" : "9781565495296" 
} 

值請問有什麼辦法可以擺脫「titleComposite」包裝對象,並且只接收titleText?例如,只拿第一個元素的titleText?

希望得到任何幫助

回答

1

可以MongoDB的aggregation實現你預期的結果。重新安排您的查詢如下...

db.onix_feed.aggregate([ 
       { 
       $match: { 
         $and: [ 
          {"addedBy":201}, 
          {"mediaFileComposite":{$exists:false}} 
         ] 
       } 
       }, 
       { 
        $project : { titleText: "$titleComposite.titleText", 
           "isbn13" : 1 } 
       } 
]) 
+0

謝謝你的回答。我嘗試了你的代碼,但是我仍然在resutls中看到「titleComposite」。 {「_id」:ObjectId(「559ab286fa4634f309826381」),「titleComposite」:{「titleText」:「全球能源的地緣政治」},「isbn13」:「9781626374331」}。我想要的結果看起來像{「_id」:ObjectId(「559ab286fa4634f309826381」),「titleText」:「全球能源的地緣政治」,「isbn13」:「9781626374331」} – Tamara

+0

我剛剛編輯了我的答案,請嘗試更新一個 – gypsyCoder

+0

我仍然看到「titleComposite」:/我使用Mongo 2.6.0如果它很重要 – Tamara