MongoDB聚合操作之排序、分页

聚合操作之排序、分页

image-20220728011428100

管道命令之$sort

$sort用于将输入的文档排序后输出

使用示例如下:

  1. 查询人物,按照年龄升序

db.person.aggregate([{$sort:{age:1}}])
  1. 查询每个国家的人数,并排序
db.person.aggregate([
   {$group:{_id:"$country",counter:{$sum:1}}},
   {$sort:{counter:-1}}
])

管道命令之$skip 和 $limit

  • $limit限制返回数据的条数
  • $skip 跳过指定的文档数,并返回剩下的文档数

注意

同时使用时先使用skip在使用limit

使用示例如下:

  1. 查询2条信息

db.person.aggregate([
   {$limit:2}
])
  1. 查询从第三条开始的信息
db.person.aggregate([
   {$skip:3}
])
  1. 查询每个国家的人数,按照人数升序,返回第二条数据
  2. db.person.aggregate([
       {$group:{_id:"$country",counter:{$sum:1}}},
       {$sort:{counter:-1}},
       {$skip:1},
       {$limit:1}
    ])

    管道命令之$project

    $project用于修改文档的输入输出结构

    字段值:0不显示,1显示

    使用示例如下:

    1. 查询人物的姓名、年龄,不显示ID

db.person.aggregate([
   {$project:{_id:0,name:1,age:1}}
   ])
    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}}
]);

 

posted @   jiang_jiayun  阅读(679)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
点击右上角即可分享
微信分享提示