Mongoose 中引用的文档数量 collection

Mongoose number of documents referenced in a collection

我有2个collections

用户:

email: { type: String, required: true, unique: true },
team: { type: ObjectId, ref: 'team', required: true},

和团队:

 name: { type: String, required: true },
 active: { type: Boolean, required: true, default: true},

我想获取所有团队以及该团队中的用户数量,我将如何使用 Mongoose 来处理这个问题?

使用 Teams 模型并执行聚合查询。

首先,我们加入 users 集合中的所有用户。然后我们创建一个名为 user_amount 的额外字段,我们在其中存储 users 数组的大小。在最后一步中,我们删除了 users 属性,但如果您需要此数组,只需删除此管道的最后一步。

Playground

Teams.aggregate([
  {
    "$lookup": {
      "from": "users",
      "localField": "_id",
      "foreignField": "team",
      "as": "users"
    }
  },
  {
    "$addFields": {
      "user_amount": {
        "$size": "$users"
      }
    }
  },
  {
    "$unset": "users"
  }
])