一、MongoDB 聚合管道(Aggregation Pipeline) )
使用聚合管道可以对集合中的文档进行变换和组合。
实际项目:表关联查询、数据的统计。
MongoDB 中使用 db.COLLECTION_NAME.aggregate([{<stage>},...]) 方法
来构建和使用聚合管道。先看下官网给的实例,感受一下聚合管道的用法。
二、MongoDB Aggregation 管道操作符与表达式
管道操作
符
Description
$project 增加、删除、重命名字段
$match
条件匹配。只满足条件的文档才能进入下
一阶段
$limit 限制结果的数量
$skip 跳过文档的数量
$sort 条件排序。
$group 条件组合结果 统计
$lookup
$lookup 操作符 用以引入其它集合的数
据 (表关联查询)
SQL 和 和 NOSQL 对比:
管道表达式:
管道操作符作为“键”,所对应的“值”叫做管道表达式。
例如{$match:{status:"A"}},$match 称为管道操作符,而 status:"A"称为管道表达式,
是管道操作符的操作数(Operand)。
每个管道表达式是一个文档结构,它是由字段名、字段值、和一些表达式操作符组成的。
WHERE $match
GROUP BY $group
HAVING $match
SELECT $project
ORDER BY $sort
LIMIT $limit
SUM() $sum
COUNT() $sum
join $lookup
常用表达式操作符 Description
$addToSet 将文档指定字段的值去重
$max 文档指定字段的最大值
$min 文档指定字段的最小值
$sum 文档指定字段求和
$avg 文档指定字段求平均
$gt 大于给定值
$lt 小于给定值
$eq 等于给定值
三、 数据模拟
db.order.insert({"order_id":"1","uid":10,"trade_no":"111","all_price":100,"all_num":2})
db.order.insert({"order_id":"2","uid":7,"trade_no":"222","all_price":90,"all_num":2})
db.order.insert({"order_id":"3","uid":9,"trade_no":"333","all_price":20,"all_num":6})
db.order_item.insert({"order_id":"1","title":"商品鼠标 1","price":50,num:1})
db.order_item.insert({"order_id":"1","title":"商品键盘 2","price":50,num:1})
db.order_item.insert({"order_id":"1","title":"商品键盘 3","price":0,num:1})
db.order_item.insert({"order_id":"2","title":"牛奶","price":50,num:1})
db.order_item.insert({"order_id":"2","title":"
Mongoose 中使用 aggregate
最新推荐文章于 2024-07-15 03:31:54 发布
本文详细介绍了MongoDB的聚合管道(Aggregation Pipeline),包括$project、$match、$limit、$skip、$sort、$group、$lookup等操作符的用法,并通过实际例子展示了如何在Mongoose中实现数据统计、表关联查询等功能。
摘要由CSDN通过智能技术生成