如何在mongodb中过滤array和groupBy中的值



我有一个成员表。members表包含成员的详细信息。我想知道这个成员属于哪个小组,所以我必须查看小组的表格。

成员表

[
{ memberId: 1, name: 'william', gmail: 'william@gmail.com' },
{ memberId: 2, name: 'Alfred', gmail: 'afd@gmail.com' }
]

分组表

[
{
name: 'Dairy',
members: [{ memberId: 1 }, { memberId: 4 }]
},
{
name: 'Grocery',
members: [{ memberId: 1 }, { memberId: 2 }]
}
]

预期输出


[
{
group: 'Dairy',
members: [{ memberId: 1, name: 'william', gmail: 'william@gmail.com' }]
},
{
group: 'Grocery',
members: [
{ memberId: 1, name: 'william', gmail: 'william@gmail.com' },
{ memberId: 2, name: 'Alfred', gmail: 'afd@gmail.com' }
]
}
]

如前所述,标准$lookup就足够了:

db.groups.aggregate([
{
"$lookup": {
"from": "members",
"localField": "members.memberId",
"foreignField": "memberId",
"as": "members"
}
}
])

Mongo游乐场

最新更新