如何过滤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"
    }
  }
])

Mongo Playground