MongoDB聚合操作之排序、分页
聚合操作之排序、分页

管道命令之$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}}
]);

浙公网安备 33010602011771号