Mongo:从嵌套对象中只选择一个字段

时间:2015-07-10 19:30:17

标签: mongodb mongodb-query

在mongo中我存储了具有字段“titleComposite”的对象。该字段包含标题对象数组,如下所示:

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

我正在进行查询,我希望只返回返回值的“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 个答案:

答案 0 :(得分:1)

你可以mongodb aggregation来达到预期的效果。将您的查询重新排列如下......

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