Mongodb:如何分组和计数


您可以使用以下语法在 MongoDB 中进行分组和计数:

 db.collection.aggregate([
    { $group : { _id : " $field_name ", count :{ $sum :1}}}
])

请注意, field_name是您要分组的字段。

以下示例展示了如何在具有以下文档的催收团队中使用此语法:

 db.teams.insertOne({team: " Mavs ", position: " Guard ", points: 31 })
db.teams.insertOne({team: " Spurs ", position: " Guard ", points: 22 })
db.teams.insertOne({team: " Rockets ", position: " Center ", points: 19 })
db.teams.insertOne({team: " Warriors ", position: " Forward ", points: 26 })
db.teams.insertOne({team: " Cavs ", position: " Guard ", points: 33 })

示例 1:分组依据和计数

我们可以使用以下代码按“位置”字段进行分组并计算每个位置的出现次数。

 db.teams.aggregate([
    { $group : { _id : " $position ", count :{ $sum :1}}}
])

这将返回以下结果:

 { _id: ' Forward ', count: 1 }
{ _id: ' Guard ', count: 3 }
{ _id: ' Center ', count: 1 }

这告诉我们:

  • “前进”位置出现1次。
  • “守卫”位置出现3次。
  • “中心”位置出现1次。

示例 2:分组和计数(然后排序)

我们可以使用以下代码来统计每个位置的出现次数,并自动按升序对结果进行排序:

 db.teams.aggregate([
    { $group : { _id : " $position ", count :{ $sum :1}}},
    { $sort : { count : 1}} 
])

这将返回以下结果:

 { _id: ' Forward ', count: 1 }
{ _id: ' Center ', count: 1 }
{ _id: ' Guard ', count: 3 }

我们可以在 count 参数中使用-1降序对结果进行排序

 db.teams.aggregate([
    { $group : { _id : " $position ", count :{ $sum :1}}},
    { $sort : { count :-1}} 
])

这将返回以下结果:

 { _id: ' Guard ', count: 3 }
{ _id: ' Forward ', count: 1 }
{ _id: ' Center ', count: 1 }

注意:您可以在此处找到$group的完整文档。

其他资源

以下教程解释了如何在 MongoDB 中执行其他常见操作:

MongoDB:如何分组和求和
MongoDB:如何计算字段中的不同值
MongoDB:如何按多个字段分组

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注