资料内容:
第一个阶段:
针对整个集合添加两个字段:
totalPrice: 订单原价总额
totalCost:订单实际总额
并将结果传到第二个阶段
第二个阶段:
按订单总价进行排序
聚合表达式
获取字段信息
$<field> : 用 $ 指示字段路径
$<field>.<sub field> : 使用 $ 和 . 来指示内嵌文档的路径
常量表达式
$literal :<value> : 指示常量 <value>
系统变量表达式
$$<variable> 使用 $$ 指示系统变量
$$CURRENT 指示管道中当前操作的文档
聚合管道阶段
$project 对输入文档进行再次投影
$match 对输入文档进行筛选
$limit 筛选出管道内前 N 篇文档
$skip 跳过管道内前N篇文档
$unwind 展开输入文档中的数组字段
$sort 对输入文档进行排序
$lookup 对输入文档进行查询操作
$group 对输入文档进行分组
$out 对管道中的文档输出
准备数据
db.userInfo.insertMany(
[
{nickName:"zhangsan",age:18},
{nickName:"lisi",age:20}]
);
聚合管道操作
$project : 投影操作, 将原始字段投影成指定名称, 如将 集合中的 nickName 投影成 name
1
db.userInfo.aggregate({$project:{ name:"$nickName"}});
$project 可以灵活控制输出文档的格式,也可以剔除不需要的字段
1
db.userInfo.aggregate({$project:{ name:"$nickName",_id:0,age:1}});