美文网首页Java 核心技术
MongoDB在Aggregate中$limit与$skip位置

MongoDB在Aggregate中$limit与$skip位置

作者: 一个菜鸟JAVA | 来源:发表于2018-11-01 17:48 被阅读2次
数据准备
{ "_id" : ObjectId("5bdac3aa370b331d24e7fbc2"), "value" : 1 }
{ "_id" : ObjectId("5bdac3d7370b331d24e7fbc5"), "value" : 2 }
{ "_id" : ObjectId("5bdac3e2370b331d24e7fbc7"), "value" : 3 }
{ "_id" : ObjectId("5bdac3ea370b331d24e7fbc9"), "value" : 4 }
{ "_id" : ObjectId("5bdac3f3370b331d24e7fbcb"), "value" : 5 }
普通查询
#查询语句
db.test.find().limit(3).skip(2);
db.test.find().skip(2).limit(3);
#结果
// 2018/11/1 17:26:15
// Command #1:
// db.test.find().limit(3).skip(2);
// Execution time: 0.0s
// Result:
{ "_id" : ObjectId("5bdac3e2370b331d24e7fbc7"), "value" : 3 }
{ "_id" : ObjectId("5bdac3ea370b331d24e7fbc9"), "value" : 4 }
{ "_id" : ObjectId("5bdac3f3370b331d24e7fbcb"), "value" : 5 }

// 2018/11/1 17:26:15
// Command #2:
// db.test.find().skip(2).limit(3);
// Execution time: 0.1s
// Result:
{ "_id" : ObjectId("5bdac3e2370b331d24e7fbc7"), "value" : 3 }
{ "_id" : ObjectId("5bdac3ea370b331d24e7fbc9"), "value" : 4 }
{ "_id" : ObjectId("5bdac3f3370b331d24e7fbcb"), "value" : 5 }

skip和limit未知交换并不会影响查询结果

Aggregate
#查询语句
db.test.aggregate([
{"$sort":{"value":1}},
{"$skip":2},
{"$limit":2}
]);

db.test.aggregate([
{"$sort":{"value":1}},
{"$limit":3},
{"$skip":2}
]);

#结果
// 2018/11/1 17:29:10
// Command #1:
// db.test.aggregate([
// {"$sort":{"value":1}},
// {"$skip":2},
// {"$limit":2}
// ]);
// Execution time: 0.0s
// Result:
{ "_id" : ObjectId("5bdac3e2370b331d24e7fbc7"), "value" : 3 }
{ "_id" : ObjectId("5bdac3ea370b331d24e7fbc9"), "value" : 4 }

// 2018/11/1 17:29:10
// Command #2:
// db.test.aggregate([
// {"$sort":{"value":1}},
// {"$limit":3},
// {"$skip":2}
// ]);
// Execution time: 0.0s
// Result:
{ "_id" : ObjectId("5bdac3e2370b331d24e7fbc7"), "value" : 3 }

可以发现两次查询的结果不一样

小结

在Aggregate中,$limit$skip位置不同是会影响最终结果的.
如果$limit在前$skip在后,表示先取limit条记录,然后跳过前skip条数记录
如果$skip在前$limit在后,表示先跳过skip条记录,然后取limit条数记录

相关文章

  • MongoDB在Aggregate中$limit与$skip位置

    数据准备 普通查询 skip和limit未知交换并不会影响查询结果 Aggregate 可以发现两次查询的结果不一...

  • MongoDB Limit与Skip方法

    Limit() 在MongoDB中读取指定数量的数据记录,可以使用MongoDB的Limit方法,limit()方...

  • mongodb的limit()和skip()方法

    1. mongodb的limit()方法 限制查询条数的方法 语法 实例 2. mongodb的skip()方法...

  • MongoDB 分页查询 antd table

    在mongoDB的分页查询中我们一般会使用到limit skip sort,在这里我们以mongoose为例前端采...

  • mongodb的聚合

    mongodb的聚合 aggregate() 方法 MongoDB中聚合的方法使用aggregate() 语法 a...

  • MD数据基本类型

    Limit与Skip方法 limit() 方法 读取指定数量的数据记录 基本语法如下所示: Skip() 方法 使...

  • 学习MongoDB(聚合)

    aggregate() MongoDB中聚合的方法使用aggregate()。aggregate() 方法的基本语...

  • MongoDB

    MongoDB中文社区 环形队列存储,先进先出下载地址mongoose高级查询:.skip.limit.sort....

  • MongoDB方法limit和skip

    在web开发过程中,我们肯定会遇到分页功能,如果是mysql我们主要是利用他的limit和offset语法,那么m...

  • 数据库(27)mongodb(下)

    limit和skip limit()用于读取指定数量的文档db.wzry.find().limit(2)skip(...

网友评论

    本文标题:MongoDB在Aggregate中$limit与$skip位置

    本文链接:https://www.haomeiwen.com/subject/nswxxqtx.html