2016-01-22 153 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