如何过滤mongodb中array和groupBy的值?
How to filter the value from array and groupBy in mongodb?
我有一个成员table。 members table 包含成员的详细信息。我想知道该成员属于哪个组,所以我必须检查组的 table。
成员table
[
{ memberId: 1, name: 'william', gmail: 'william@gmail.com' },
{ memberId: 2, name: 'Alfred', gmail: 'afd@gmail.com' }
]
组table
[
{
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"
}
}
])
我有一个成员table。 members table 包含成员的详细信息。我想知道该成员属于哪个组,所以我必须检查组的 table。
成员table
[
{ memberId: 1, name: 'william', gmail: 'william@gmail.com' },
{ memberId: 2, name: 'Alfred', gmail: 'afd@gmail.com' }
]
组table
[
{
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"
}
}
])