У меня 3 коллекции: группы, пользователи и участники. Коллекция групп содержит сведения о группах c, коллекция пользователей содержит сведения о пользователях c, а коллекция участников содержит ассоциацию пользователей с группами.
Например:
Groups:
id | name
ObjectId("5ee5e346fae4a21e28a81d91") | Housemates
ObjectId("5ee5e346fae4a21e28a81d92") | Co-workers
Users:
id | name
ObjectId("5ee493b0989d0f271cdc41c1") | Joulie
ObjectId("5ee493b0989d0f271cdc41c3") | Newelle
ObjectId("5ee493b0989d0f271cdc41c5") | John
ObjectId("5ee493b0989d0f271cdc41c7") | Larry
Members:
group_id | user_id
ObjectId("5ee5e346fae4a21e28a81d91") | ObjectId("5ee493b0989d0f271cdc41c1")
ObjectId("5ee5e346fae4a21e28a81d91") | ObjectId("5ee493b0989d0f271cdc41c3")
ObjectId("5ee5e346fae4a21e28a81d92") | ObjectId("5ee493b0989d0f271cdc41c5")
ObjectId("5ee5e346fae4a21e28a81d92") | ObjectId("5ee493b0989d0f271cdc41c7")
I хотите присоединиться к этим трем коллекциям и получить сведения о пользователях для каждой группы с именем группы.
Expected Output:
[
{ "group_name":"Housemates",
"user_info": [
{"name":"Joulie"},
{"name":"Newelle"}
]
},
{ "group_name":"Co-workers",
"user_info": [
{"name":"John"},
{"name":"Larry"}
]
}
]
Я написал запрос, чтобы получить результат, как указано выше, но он не работает:
db.members.aggregate([
{
$lookup : {
from: 'users',
localField: "user_id",
foreignField: "_id",
as: "user_info"
}
},{
$lookup: {
from: 'groups',
localField: "group_id",
foreignField: "_id",
as: "group_info"
}
}
]);
Этот вопрос выглядит похожим, и я тоже пробовал решение из него, но, похоже, он не работает для меня. Я был бы очень признателен за любую помощь или руководство. Заранее спасибо!