適用於:
MongoDB 虛擬核心
$group
匯總階段會依指定的標識符表達式將檔分組,並套用累加器表達式來為每個群組建立計算欄位。 此階段對於數據匯總和摘要作業而言非常重要。
語法
$group
階段的語法如下所示:
{
$group: {
_id: <expression>,
<field1>: { <accumulator1>: <expression1> },
<field2>: { <accumulator2>: <expression2> },
...
}
}
參數
說明 | |
---|---|
_id |
必須的。 要分組依據的表達式。 使用 null 計算所有輸入文件的累積值。 |
field |
選擇性。 使用累加器運算符計算,例如$sum、$avg、$max、$min、$count等。 |
範例
範例 1:依城市分組並分析員工分佈
範例會依城市分組存放區,並分析不同位置的人員配置模式。
db.stores.aggregate([
{
$group: {
_id: "$city",
totalFullTimeStaff: { $sum: "$staff.employeeCount.fullTime" },
totalPartTimeStaff: { $sum: "$staff.employeeCount.partTime" },
avgFullTimeStaff: { $avg: "$staff.employeeCount.fullTime" },
storesInCity: { $count: {} }
}
},
{
$project: {
city: "$_id",
totalFullTimeStaff: 1,
totalPartTimeStaff: 1,
avgFullTimeStaff: { $round: ["$avgFullTimeStaff", 1] },
storesInCity: 1,
fullTimeRatio: {
$round: [
{ $divide: ["$totalFullTimeStaff", { $add: ["$totalFullTimeStaff", "$totalPartTimeStaff"] }] },
2
]
}
}
},
{ $limit : 2}
])
此查詢會依城市位置傳回人員分析。
{
"_id": "New Ellsworth",
"totalFullTimeStaff": 11,
"totalPartTimeStaff": 1,
"avgFullTimeStaff": 11,
"storesInCity": 1,
"city": "New Ellsworth",
"fullTimeRatio": 0.92
},
{
"_id": "Jalonborough",
"totalFullTimeStaff": 4,
"totalPartTimeStaff": 1,
"avgFullTimeStaff": 4,
"storesInCity": 1,
"city": "Jalonborough",
"fullTimeRatio": 0.8
}