【问题标题】:How to filter the value from array and groupBy in mongodb? [duplicate]如何在mongodb中过滤数组和分组依据的值? [复制]
【发布时间】:2021-09-01 04:50:18
【问题描述】:

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

成员表

[
  { 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 阶段会返回您的预期结果。
  • 加入成员表和组表。如果成员表中的成员返回只有匹配成员的组

标签: mongodb mongoose aggregate


【解决方案1】:

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

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

Mongo Playground

【讨论】:

    猜你喜欢
    • 2018-11-22
    • 1970-01-01
    • 1970-01-01
    • 2022-01-12
    • 1970-01-01
    • 1970-01-01
    • 2020-08-17
    • 2018-08-19
    • 2019-02-23
    相关资源
    最近更新 更多