MongoDB——聚合管道之$limit&$skip&$sort操作

Posted 小志的博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MongoDB——聚合管道之$limit&$skip&$sort操作相关的知识,希望对你有一定的参考价值。

目录

一、数据准备

  • 准备数据集,执行脚本

    var tags = ["nosql","mongodb","document","developer","popular"];
    var types = ["technology","sociality","travel","novel","literature"];
    var books=[];
    for(var i=0;i<50;i++)
    	var typeIdx = Math.floor(Math.random()*types.length);
    	var tagIdx = Math.floor(Math.random()*tags.length);
    	var tagIdx2 = Math.floor(Math.random()*tags.length);
    	var favCount = Math.floor(Math.random()*100);
    	var username = "xx00"+Math.floor(Math.random()*10);
    	var age = 20 + Math.floor(Math.random()*15);
    	var book = 
    		title: "book-"+i, 
    		type: types[typeIdx],
    		tag: [tags[tagIdx],tags[tagIdx2]],
    		favCount: favCount, 
    		author: name:username,age:age
    	;
    	books.push(book)
    
    db.books1.insertMany(books);
    

二、聚合管道之$limit操作

2.1、聚合管道之$limit的概述

  • 限制传递到管道中下一阶段的文档数
  • 注意:当 $ sort在管道中的$ limit之前立即出现时,$sort操作只会在过程中维持前n个结果,其中n是指定的限制,而MongoDB只需要将n个项存储在内存中。

2.2、聚合管道之$limit的示例

  • 返回管道传递给它的前5个文档

    db.books1.aggregate([
    	$limit : 5  
    ])
    

三、聚合管道之$skip操作

3.1、聚合管道之$skip操作的概述

  • 跳过进入stage的指定数量的文档,并将其余文档传递到管道中的下一个阶段

3.2、聚合管道之$skip的示例

  • 返回跳过指定数量的文档,并将其余文档传递到管道中的下一个阶段

    db.books1.aggregate([ 
    	$skip : 5 
    ])
    

四、聚合管道之$sort操作

4.1、聚合管道之$sort的概述

  • 对所有输入文档进行排序,并按排序顺序将它们返回到管道。
  • 排序顺序设置为1或-1,以分别指定升序或降序排序。

4.2、聚合管道之$sort的语法

  • 语法

     $sort:  <field1>: <sort order>, <field2>: <sort order> ...  
    

4.3、聚合管道之$sort的示例

  • 对收藏数降序排序、标题进行升序排序

    db.books1.aggregate([ 
    	$sort : favCount:-1,title:1 
    ])
    

以上是关于MongoDB——聚合管道之$limit&$skip&$sort操作的主要内容,如果未能解决你的问题,请参考以下文章

Mongodb中数据聚合之聚合管道aggregate

mongoDB表与表的关系及聚合管道查询

MongoDB——聚合管道之$unwind操作

MongoDB 聚合管道(Aggregation Pipeline)

MongoDB——聚合管道之$match和$count操作

聚合框架中的 $skip 和 $limit