我有两个收藏; users
和communities
。我的用户可以链接到许多社区,因此我在用户架构中将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"
}
}
] )
试试看,如果您有任何问题,请告诉我。