我有两个收藏; userscommunities。我的用户可以链接到许多社区,因此我在用户架构中将linkedCommunities作为数组:

const userSchema = new Schema({
  linkedCommunities: [
    {
      type: mongoose.Schema.ObjectId,
      ref: 'Community'
    }
  ]
});


在我的communities视图上,我想显示链接到每个社区的users数,因此它显示为:

| Community   | Number of users |
| ---------   | --------------- |
| Community 1 | 45              |
| Community 2 | 78              |
| Community 4 | 107             |


理想情况下,当我在Community模型上进行查找时,我想要一个名为linkedUserCount之类的字段。

我敢肯定我可以使用aggregate做到这一点,但我一直在努力寻找正确的管道运算符和顺序。

最佳答案

您可以通过使用以下mongodb查询来获得所需的结果:

db.users.aggregate( [
  {
    $unwind : "$linkedCommunities"
  },
  {
    $group : {
      _id : "$linkedCommunities",
      count: { $sum: 1 }
    }
  },
  {
    $project: {
      _id: 0,
      community: "$_id",
      count: "$count"
    }
  }
] )


试试看,如果您有任何问题,请告诉我。

10-05 23:54