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

x33g5p2x  于2022-04-25 转载在 其他  
字(1.4k)|赞(0)|评价(0)|浏览(217)

一、数据准备

  • 准备数据集,执行脚本
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}} 
])

相关文章