У меня есть коллекция мангуста, которая выглядит, как этотMongoose Совокупные получить все документы, совпадающие с критериями, на который ссылается набор документов, соответствующих другой критерий
[{
_type:'video',
_id:'video1',
status:'active'
},
{
_type:'video',
_id:'video2',
status:'active'
}]
И другой коллекции, как этот
[{
_type:'product',
_id:'product1',
items:['video1']
}]
Как можно я использую агрегат мангуста для поиска всех документов с _типом «видео», которые указаны в поле «элементы» любого документа с типом «продукта»
Что я хочу в результате
[{
_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"
}
}
]
Возможный дубликат [$ lookup для ObjectId's в массиве] (http://stackoverflow.com/questions/34967482/lookup-on-objectids-in-an-array) – Veeram
Я не думаю, что это так, вопрос, который вы связали, показывает, как сделать противоположное тому, что я ищу. Мне нужно найти все «видео» документы, которые содержатся в поле «элементы» набора документов «продукта», Вопрос, который вы упомянули, будет, если бы я хотел найти все «товарные» документы, которые содержат выбранные «видео» документы? –
Я имею в виду, что вам просто нужно «раскручивать» в конце, чтобы сгладить массив видео. Разве это не то, что вам нужно? '[{ "$ матч": { "_type": "продукт" } }, { "$ разматывает": "$ пункты" }, { $ поиска: { из: "видео", localField: "items", foreignField: "_id", as: "videos" } }] '. Это даст вам все видео для каждого продукта. – Veeram