I have got 3 collections: groups, users, and members. Groups collection contains group specific details, users collection contains user-specific details and members collection contains the association of users with groups.
For example:
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 want to join these three collections and get user details for each group with the group name.
Expected Output:
[
{ "group_name":"Housemates",
"user_info": [
{"name":"Joulie"},
{"name":"Newelle"}
]
},
{ "group_name":"Co-workers",
"user_info": [
{"name":"John"},
{"name":"Larry"}
]
}
]
I've written a query to get the output as above but it's not working:
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"
}
}
]);
This question looks similar and I have tried the solution from it as well, but it does not seem to work for me. I would really appreciate any help or guideline. Thank you in advance!