首页 > 数据库 >MongoDB聚合操作之排序、分页

MongoDB聚合操作之排序、分页

时间:2023-06-29 19:23:08浏览次数:41  
标签:sort 分页 MongoDB db person skip aggregate 排序 id

聚合操作之排序、分页

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}}
]);

 

标签:sort,分页,MongoDB,db,person,skip,aggregate,排序,id
From: https://www.cnblogs.com/jiangjiayun/p/17515029.html

相关文章

  • JS sort排序方法
    Array.prototype.sort()sort()方法就地对数组的元素进行排序,并返回对相同数组的引用。默认排序是将元素转换为字符串,然后按照它们的UTF-16码元值升序排序。由于它取决于具体实现,因此无法保证排序的时间和空间复杂度。尝试一下constmonths=['March','Jan','Feb','Dec'......
  • 带头结点单链表插入,删除,查找与排序实现一个简单的基于链表结构的学生管理系统
    链表结构和操作方法////CreatedbyAdministratoron2023/6/12.//#ifndefCODE_LINKEDLIST_H#defineCODE_LINKEDLIST_H#include<iostream>#include<cstring>#include<stdlib.h>#include"student.h"typedefstructlink_list{//......
  • 光脚丫学LINQ(003):排序结果集
    视频演示:http://u.115.com/file/f2e2959888 通常可以很方便地将返回的数据进行排序。orderby子句将使返回的序列中的元素按照被排序的类型的默认比较器进行排序。例如,下面的查询可以扩展为按Name属性对结果进行排序。因为Name是一个字符串,所以默认比较器执行从A到Z的字母......
  • MongoDB聚合操作之分组、过滤
    聚合操作之分组、过滤MongoDB中聚合(aggregate)主要用于处理多个文档(诸如统计平均值,求和等),并返回计算后的数据结果。对多个文档进行分组对分组的文档执行操作并返回单个结果分析数据变化语法:db.集合名称.aggregate([{管道:{表达式}}])管道命令之$group按照某个字段......
  • uva 123(排序、检索)
    题目:Searchingandsortingarepartofthetheoryandpracticeofcomputerscience.Forexample,binarysearchprovidesagoodexampleofaneasy-to-understandalgorithmwithsub-linearcomplexity.Quicksortisanefficient[averagecase]comparisonbased......
  • MongoDB删除文档
    删除文档编写语法为db.集合名.函数名()函数名含义remove( <query>)参数query:匹配符合的删除条件数据deleteOne( <query>)更新一条数据deleteMany( <query>)更新多条数据样例删除集合所有文档db.集合名.deleteMany({})删除指定条件的文档db.集......
  • 使用element-plus的el-pagination分页组件的时候怎么换中文?
    element里面的分页是英文版的,但是项目需求是要中文的,可以用el-config-provider(切换系统语言)全局的配置选项,有locale属性,用来切换语言包做法如下:在main.js引入对应的包,代码如下:1import'normalize.css/normalize.css'2importElementPlusfrom'element-plus'3import'......
  • 自媒体素材管理——分页查询图片素材
    /***素材列表查询*@paramdto*@return*/@OverridepublicResponseResultfindList(WmMaterialDtodto){//1、检查参数dto.checkParam();//2、分页查询IPagepage=newPage<>(dto.getPage(),dto.......
  • MongoDB数据的更新
    数据的更新编写语法为db.集合名.函数名()函数名含义update( <query>, <update> ,{multi:<boolean>})参数query:查询条件,类似sql语句update中where部分参数update:更新操作符,类似sql语句update中set部分参数multi:可选,默认是false,表示只更新找到的第一条记录,值为tr......
  • vue-element table表格排序推拽功能
    //1.安装sortablejsnpminstallsortablejs--save//2.功能页面中引入importSortablefrom‘sortablejs’具体使用(注意:elementtable务必指定row-key,且row-key必须是唯一的,如id,不然会出现排序不对的情况)<el-tablerow-key="id":data="tableData"style="width:......