聚合操作之排序、分页
管道命令之$sort
$sort
用于将输入的文档排序后输出
使用示例如下:
-
查询人物,按照年龄升序
db.person.aggregate([{$sort:{age:1}}])
- 查询每个国家的人数,并排序
db.person.aggregate([
{$group:{_id:"$country",counter:{$sum:1}}},
{$sort:{counter:-1}}
])
管道命令之$skip
和 $limit
$limit
限制返回数据的条数$skip
跳过指定的文档数,并返回剩下的文档数
注意
同时使用时先使用skip在使用limit
使用示例如下:
-
查询2条信息
db.person.aggregate([
{$limit:2}
])
- 查询从第三条开始的信息
db.person.aggregate([
{$skip:3}
])
- 查询每个国家的人数,按照人数升序,返回第二条数据
-
db.person.aggregate([ {$group:{_id:"$country",counter:{$sum:1}}}, {$sort:{counter:-1}}, {$skip:1}, {$limit:1} ])
管道命令之
$project
$project
用于修改文档的输入输出结构字段值:0不显示,1显示
使用示例如下:
-
查询人物的姓名、年龄,不显示ID
-
db.person.aggregate([
{$project:{_id:0,name:1,age:1}}
])
-
- 查询每个国家的人数,只显示数量
db.person.aggregate([
{$group:{_id:"$country",counter:{$sum:1}}},
{$project:{_id:0,counter:1}}
])
注意
_id
与其他字段共同设置时,0只能设置在_id
上- 设置字段时,除了_id字段,其他默认取反
//排序
db.person.aggregate([
{$sort:{age:1}}
]);
//分组后排序
db.person.aggregate([
{$group:{_id:'$country',person_num:{$sum:1}}},
{$sort:{person_num:-1}}
]);
//分页
db.person.aggregate([
{$group:{_id:'$country',person_num:{$sum:1}}},
{$sort:{person_num:-1}},
{$skip:1},
{$limit:1}
]);
//project
db.person.aggregate([
{$group:{_id:'$country',person_num:{$sum:1},age:{$avg:'$age'}}},
{$sort:{person_num:-1}},
{$skip:1},
{$limit:1},
{$project:{person_num:1,age:1}}
]);
标签:sort,分页,MongoDB,db,person,skip,aggregate,排序,id From: https://www.cnblogs.com/jiangjiayun/p/17515029.html