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/ –