1
鉴于此会员资料:
{ _id: 1, userType: 'CAPTAIN', firstName: 'Robert', lastName: 'Reichert', captain: 1}
{ _id: 2, userType: 'RIDER', firstName: 'Heather', lastName: 'Webre', captain: 1}
{ _id: 3, userType: 'CAPTAIN', firstName: 'Baba', lastName: 'Booey', captain: 3}
我想组的队长一起,显示了与每个队长(即使是相关成员的计数船长本身)。 船长领域引用同一个集合中的_id,所以巴巴Booey是他自己的队长,罗伯特是他自己和希瑟的队长。
期望的结果
{ name: 'Baba Booey', count: 1 },
{ name: 'Robert Reichert', count: 2 }
这里的查询:
Member.aggregate([
{
$group: {
_id: {
captain: "$captain",
},
ridersCount: { $sum: 1 },
firstName: { "$first": "$firstName" },
lastName: { "$first": "$lastName" },
},
},
{
$sort: { lastName: 1, firstName: 1 }
},
{
$project: {
_id: 1,
ridersCount: 1,
firstName: 1,
lastName: 1,
}
},
])
(我已经被截断的数据的一些进一步筛选,因为这不是我的问题必要的)
我得到了重新sults我想,除了它显示了骑手的结果,而不是队长,像这样:
{ name: 'Baba Booey', count: 1 },
{ name: 'Heather Webre', count: 2 }
当我打开它使用$持续的,而不是$首先它返回正确的结果,但我认为这只是因为这个例子中的名字。我想的名字,只显示成员谁拥有的用户类型:CAPTAIN
感谢伯特兰!这很好。我完全不熟悉$$ ROOT,但在这里找到了一些很好的信息:https://docs.mongodb.com/manual/reference/operator/aggregation/group/ –