У меня есть схема пользователей с полем people, содержащим свойство viewers
, которое содержит массив ObjectIds в качестве ссылки на саму коллекцию пользователей, например
{
"username": "user1",
"password": "password",
"email": "user1@gmail.com",
"people": [{
"id": 1,
"viewers": ["ObjectId....", "ObjectId...."]
},
{
"id": 2,
"viewers": ["ObjectId....", "ObjectId...."]
}
]
}
Что мне нужно сделать, это $lookup
для каждого элемента в средствах просмотра, проблема в том, что когда я использую ниже, конвейер выдвигает одни и те же средства просмотра для каждого документа
{
$unwind: {
path: "$people.viewers",
preserveNullAndEmptyArrays: true
}
},
{
$lookup: {
from: "users",
localField: "people.viewers",
foreignField: "_id",
as: "people"
}
},
{
$unwind: {
path: "$viewers",
preserveNullAndEmptyArrays: true
}
},
{
$project: {
username: 1,
"viewers.username": 1
}
},
{
$group: {
_id: "$_id",
username: { $first: "$username" },
people: { $first: "$people" },
viewers: { $push: "$viewers" }
}
},
{
$project: {
username: 1,
"people.id": 1,
"people.viewers": "$viewers"
}
}
Что не так в этой совокупности