MongoDB 是一种非关系型数据库,具有高度的可扩展性和灵活性。在 MongoDB 中,$group 聚合操作是一种非常常见的操作,它可以对数据进行分组、统计和分析。本文将详细介绍 MongoDB 中 $group 聚合操作的使用方法和示例,希望能够为前端开发者提供指导和帮助。
$group 聚合操作的语法
在 MongoDB 中,$group 聚合操作的语法如下:
// javascriptcn.com 代码示例 db.collection.aggregate([ { $group: { _id: <expression>, <field1>: { <accumulator1> : <expression1> }, ... } } ])
其中,$group 表示进行聚合操作,_id 表示分组的依据, 表示聚合操作的字段, 表示聚合操作的方式, 表示聚合操作的表达式。
$group 聚合操作的示例
为了更好地理解 $group 聚合操作,下面将通过几个示例来演示它的使用方法。
示例一:统计每个城市的人数
假设有一个名为 users 的集合,包含以下数据:
// javascriptcn.com 代码示例 { "_id": 1, "name": "张三", "city": "北京" }, { "_id": 2, "name": "李四", "city": "上海" }, { "_id": 3, "name": "王五", "city": "北京" }, { "_id": 4, "name": "赵六", "city": "广州" }
现在我们需要统计每个城市的人数,可以使用以下代码:
db.users.aggregate([ { $group: { _id: "$city", count: { $sum: 1 } } } ])
其中,_id 表示以 city 字段为分组依据,count 表示统计每个城市的人数,$sum 表示求和操作,1 表示每个文档的计数器。
执行以上代码后,将得到如下结果:
// javascriptcn.com 代码示例 { "_id": "北京", "count": 2 }, { "_id": "上海", "count": 1 }, { "_id": "广州", "count": 1 }
示例二:统计每个城市的平均年龄
假设有一个名为 users 的集合,包含以下数据:
// javascriptcn.com 代码示例 { "_id": 1, "name": "张三", "city": "北京", "age": 20 }, { "_id": 2, "name": "李四", "city": "上海", "age": 25 }, { "_id": 3, "name": "王五", "city": "北京", "age": 30 }, { "_id": 4, "name": "赵六", "city": "广州", "age": 35 }
现在我们需要统计每个城市的平均年龄,可以使用以下代码:
db.users.aggregate([ { $group: { _id: "$city", avgAge: { $avg: "$age" } } } ])
其中,_id 表示以 city 字段为分组依据,avgAge 表示统计每个城市的平均年龄,$avg 表示求平均值操作。
执行以上代码后,将得到如下结果:
// javascriptcn.com 代码示例 { "_id": "北京", "avgAge": 25 }, { "_id": "上海", "avgAge": 25 }, { "_id": "广州", "avgAge": 35 }
示例三:统计每个城市的最大年龄和最小年龄
假设有一个名为 users 的集合,包含以下数据:
// javascriptcn.com 代码示例 { "_id": 1, "name": "张三", "city": "北京", "age": 20 }, { "_id": 2, "name": "李四", "city": "上海", "age": 25 }, { "_id": 3, "name": "王五", "city": "北京", "age": 30 }, { "_id": 4, "name": "赵六", "city": "广州", "age": 35 }
现在我们需要统计每个城市的最大年龄和最小年龄,可以使用以下代码:
// javascriptcn.com 代码示例 db.users.aggregate([ { $group: { _id: "$city", maxAge: { $max: "$age" }, minAge: { $min: "$age" } } } ])
其中,_id 表示以 city 字段为分组依据,maxAge 表示统计每个城市的最大年龄,$max 表示求最大值操作,minAge 表示统计每个城市的最小年龄,$min 表示求最小值操作。
执行以上代码后,将得到如下结果:
// javascriptcn.com 代码示例 { "_id": "北京", "maxAge": 30, "minAge": 20 }, { "_id": "上海", "maxAge": 25, "minAge": 25 }, { "_id": "广州", "maxAge": 35, "minAge": 35 }
总结
$group 聚合操作是 MongoDB 中非常常见的操作,可以对数据进行分组、统计和分析。本文介绍了 $group 聚合操作的语法和示例,希望能够为前端开发者提供指导和帮助。在实际开发中,可以根据具体需求灵活运用 $group 聚合操作,提高数据处理效率和准确性。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6550acfad2f5e1655da827c4