2015-07-10 54 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