什么是 MongoDB 聚合查询
MongoDB 是一个支持文档存储的数据库管理系统,是 NoSQL 数据库的一种。而 MongoDB 聚合查询就是 MongoDB 数据库中用于实现数据聚合操作的一个功能。聚合查询可以对多个文档进行聚合操作,并返回聚合结果。
聚合查询的语法
聚合查询的语法如下:
-- -------------------- ---- ------- ------------------------- - ------ - - --- - ------------- -------- - --------------- - --------------- --- - - --
其中,db.collection.aggregate()
是聚合查询方法的名称,中括号中的表达式是表示聚合操作的管道。
在 $group
中,_id
表示根据哪个字段进行聚合,<field1>
表示需要计算的域名,<accumulator1>
表示计算方法,<expression1>
表示需要计算的表达式。
除了 $group
,聚合操作中常用的方法还包括:
$match
: 过滤数据$project
: 常用于重命名字段、创建计算字段等操作$sort
: 用于排序操作$limit
: 用于限制输出结果的数量$skip
: 用于跳过指定数量的文档
聚合查询的实例介绍
以下是一些常见的 MongoDB 聚合查询实例。
统计每个城市的用户数量
db.users.aggregate([ { $group: { _id: "$city", count: { $sum: 1 } } } ]);
其中,db.users
是数据集合名称,_id: "$city"
表示根据 city 字段进行聚合,$sum: 1
表示对每一个聚合结果累计计数。
分组求和
db.orders.aggregate([ { $group: { _id: "$product", total: { $sum: "$amount" } } } ]);
其中,db.orders
是数据集合名称,_id: "$product"
表示根据 product 字段进行聚合,$sum: "$amount"
表示对每一个聚合结果进行求和计算。
分组求平均值
db.orders.aggregate([ { $group: { _id: "$product", avgAmount: { $avg: "$amount" } } } ]);
其中,db.orders
是数据集合名称,_id: "$product"
表示根据 product 字段进行聚合,$avg: "$amount"
表示对每一个聚合结果进行求平均值计算。
匹配查询
db.orders.aggregate([ { $match: { status: "completed" } }, { $group: { _id: "$product", total: { $sum: "$amount" } } } ]);
其中,db.orders
是数据集合名称,$match: { status: "completed" }
表示筛选出所有状态为 "completed" 的订单,_id: "$product"
表示根据 product 字段进行聚合,$sum: "$amount"
表示对每一个聚合结果进行求和计算。
总结
本文介绍了 MongoDB 聚合查询的概念、语法和常见实例。了解聚合查询可以帮助开发者更方便地操作 MongoDB 数据库,实现各种数据聚合分析需求。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6454cacb968c7c53b088de02