2017-02-13 66 views
1

我有一個貓鼬收集,看起來像這樣貓鼬聚合得到所有匹配的一組匹配的另一標準

[{ 
    _type:'video', 
    _id:'video1', 
    status:'active' 
}, 
{ 
    _type:'video', 
    _id:'video2', 
    status:'active' 
}] 

而另一個集合這樣

[{ 
    _type:'product', 
    _id:'product1', 
    items:['video1'] 
}] 

哪有文件中引用的標準文件我使用貓鼬聚合來查找所有帶有_type爲'video'的文件,這些文件在_type爲'product'的任何文檔的字段'items'中引用。

我要的結果

[{ 
    _type:'video', 
    _id:'video1', 
    status:'active' 
}] 

這是我迄今爲止,但「connectedVideos」始終是一個空數組

[{ 
    "$match":{ 
     "_type":"product" 
    } 
}, 

{ 
    "$project": { 
     "items":true, 
     "_id":true, 
     "title":true 
    } 
}, 
{ 
    "$unwind":"$items" 
}, 
{ 
    "$lookup": { 
     "from": "videos", 
     "localField": "items", 
     "foreignField": "_id", 
     "as": "connectedVideos" 
    } 
} 
] 
+0

[$在數組中的ObjectId的lookup的可能的重複](http://stackoverflow.com/questions/34967482/lookup-on-objectids-in-an-array) – Veeram

+0

我不認爲是這種情況,你已經鏈接的問題演示瞭如何做與我正在尋找的相反。 我需要找到包含在「產品」文檔集的「商品」字段中的所有'視頻'文檔, 您提到的問題是如果我想查找包含所選商品的所有「商品」文檔'視頻'文件? –

+0

我的意思是說你只需要'$ unwind'來結束視頻陣列。這不是你所追求的嗎? '[{ 「$匹配」:{ 「_type」: 「產品」 } },{ 「$開卷」: 「$項目」 },{ $查找:{ 從 「視頻」, localField:「items」, foreignField:「_id」, as:「videos」 } }]'這會爲您提供每個產品的所有視頻。 – Veeram

回答