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

Tam*_*ara 2 mongodb mongodb-query

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

 "titleComposite": [
 "0": {
        "titleType": "01",
        "titleText": "Test cover uploading"
      }
 ]
Run Code Online (Sandbox Code Playgroud)

我正在执行查询,我只想接收返回值的“titleText”值。这是我的查询的示例:

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

在结果中我看到类似的值

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

有没有办法摆脱“titleComposite”包装对象并只接收 titleText?例如,只取第一个元素的titleText?

将不胜感激任何帮助

gyp*_*der 5

你可以通过mongodb聚合来达到你预期的结果。重新排列您的查询如下...

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