聚合操作
聚合介绍
1.什么是聚合操作
把一系列的操作合并到一个方法中完成
在聚合操作中,每一个操作我们称之为一个阶段
在聚合操作中,上一个阶段处理的结果会传递给下一个阶段,所有阶段处理完毕会返回一个新的结果集
2.聚合操作语法:db.集合.aggregate(阶段,选项)
聚合管道阶段
// 准备数据:
//db.person.insertMany([
// {name:{firstName:'zs', lastName:'Lee'}, age:18, book:{name:'学习HTML', price: 88}},
// {name:{firstName:'lisi', lastName:'Jiang'}, age:17, book:{name:'学习JavaScript', price: 99}}
//])
$project: 对输入的文档按照我们需要的格式进行投影
!! $project的操作类似于mysql中的视图,它不会修改原来的集合,而是投影了一个集合
$project的操作中,如果引用了不存在的字段,会把这个字段自动用null填充
// 需求:查询文档,并且把字段的显示名称进行修改
//db.person.aggregate([
// {
// $project:{
// _id:0,
// pName:'$name.firstName',
// pAge:'$age',
// fullName:['$name.lastName','$name.firstName','$name.nickName']
// }
// }
//])
$match:和find中的条件参数类似,用于筛选符合条件的文档
// 需求:根据name字段中的firstname查找文档
//db.person.aggregate([
// {
// $match:{
// 'name.firstName':'zs'
// }
// }
//])
// 需求:根据name字段中的firstname查找文档,并且把字段的显示名称进行修改
//db.person.aggregate([
// {
// $match:{
// 'name.firstName':'zs'
// }
// },
// {
// $project:{
// _id:0,
// pName:'$name.firstName',
// pAge:'$age'
// }
// }
//])
$skip: 用于指定跳过几个文档,$limit:用于指定获取几个文档,如果没有指定$skip,那么默认从第一条数据开始获取
//db.person.aggre