Передать данные из одного $lookup в другой
Есть aggregate-запрос, включающий в себя два $lookup:
[{
$match: {
id
}
},
{
$lookup: { // 1
from: 'blogs',
as: 'blog',
pipeline: [{
$project: {
id: 1, // * Отсюда
name: 1,
articles: 1
},
}, {
$match: {
articles: {
$in: [id]
}
}
}, {
$unset: 'articles'
}]
}
},
{
$lookup: { // 2
from: 'users',
as: 'user',
pipeline: [{
$project: {
id: 1,
user_name: 1,
picture: 1
},
}, {
$match: {
blogs: {
$in: [...] // Передать сюда
}
}
}]
}
}
]
Как можно передать поле из первого во второй (поле отмечено *)?
Ответы (1 шт):
Автор решения: Voprositel
→ Ссылка
Используйте let: {"blogIds": "$blog.id"}
и в процессе используйте $$blogIds
$lookup: {
from: 'users',
as: 'user',
let: { "blogIds": "$blog.id" }
pipeline: [{ ... }]
}