2016-01-22 112 views
1

我一直在这个早上摔跤。我试图从数组中拉出一个嵌套的对象。我一直在following along with the mongo query docs,但我无法返回所需的对象。使用猫鼬返回单个嵌套数组对象

videocollection

{ 
    "_id": ObjectID("95738ax1795b45f0hgn8dbfd8"), 
    "playlist": [ 
    { 
     "videos": [ 
     { 
      "title": "Video Title 1", 
      "slug": "video-1"  
     }, 
     { 
      "title": "Video Title 2", 
      "slug": "video-2" 
     } 
     ], 
     "related": [ 
     { 
      .... 
     } 
     ] 
    } 
    ] 
} 

当我运行在MongoDB的CLI以下查询我要么得到结果为零返回或整个文件。

db.videocollection.find({}, { $elemMatch: {'playlist.videos.slug':'video-2'} }) 

db.videocollection.find({}, {_id: 0, 'playlist.0.videos': {$elemMatch: {'slug': 'video-2' }}}) 

我试图查询视频阵列中的slug

+1

您是否希望整个'playlist'与'videos'只有匹配的子文档?请发布预期的输出。 – BatScream

回答

0

适当查询将是:

db.videocollection.find({ 'playlist.$.videos': { $elemMatch: { 'slug': 'video-2'} } }) 

$positional operator和表示在阵列中的任何索引。

+0

不幸的是,当我通过CLI运行它时,它仍然空着。我在蒙戈3.2.1 – hybrid9

+0

这已被修复。 'elemMatch'在一个数组上运行。我早先的解决方案选择了一个单一元素 – gnerkus