db.stu.aggregate([
//按照{xx:xx}中的内容进行匹配
{$match:{age:{$gt:20}}},
对于{$group:{_id:xxx,}}格式的分组,含义为该管道为分组,_id是固定写法,对应的值即为要分组的字段
,group对应的value值里的每个key(除了_id)都可以是自定义,但是值必须从表中来
{$group:{_id:'$gender',counter:{$sum:1},docs:{$push:'$$ROOT'}}},
//投影,表达式内的内容为想要显示的值:1, 隐藏的值:0
{$project:{_id:0,counter:1}}
//按照_id指定的对应列进行降序排序
{$sort:{_id:-1}},
//与db.stu.find().skip()用法一样.不同点在于limit()函数中skip和limit位置不交换
{$skip:1},
//与上面连在一起的含义是,跳过多少个,然后取多少个
{$limit:1}
])
原数据:
{
"_id" : 1.0,
"item" : "t-shirt",
"size" : [
"S",
"M",
"L"
]
}
// unwind相当于把前边聚合起来的数据再按照配置的规则重新拆分开
db.t2.aggregate([
{$unwind:'$size'}
])
/* 1 */
{
"_id" : 1.0,
"item" : "t-shirt",
"size" : "S"
}
/* 2 */
{
"_id" : 1.0,
"item" : "t-shirt",
"size" : "M"
}
/* 3 */
{
"_id" : 1.0,
"item" : "t-shirt",
"size" : "L"
}
db.t2.aggregate([
{$unwind:{path:'$size',preserveNullAndEmptyArrays:true}
}
])