MongoDB利用limit和skip实现分页

本文将介绍怎样利用MongoDB的skip()和limit()方法实现查询数据分页。

limit()方法

如果你需要在MongoDB中查询指定数量的文档,可以使用 MongoDB 的 limit() 方法,limit() 方法接受一个数字参数,该参数指定从 MongoDB 中读取的文档数。

limit() 语法:

db.collection.find().limit(size);

参数说明:

  • collection:表示集合名称

  • size:表示你要从集合中查询文档的数量

实例:从users集合中查询2条记录。如下:

# 查看 users 集合中的文档
> db.users.find();                                                       
{ "_id" : ObjectId("5e4948fecd56e9badcee416a"), "id" : 1, "name" : "张三" }
{ "_id" : ObjectId("5e494905cd56e9badcee416b"), "id" : 2, "name" : "李四" }
{ "_id" : ObjectId("5e49490dcd56e9badcee416c"), "id" : 3, "name" : "王五" }
{ "_id" : ObjectId("5e494917cd56e9badcee416d"), "id" : 4, "name" : "赵六" }
{ "_id" : ObjectId("5e49492acd56e9badcee416e"), "id" : 5, "name" : "洪七" }

# 从 users 中查询2个文档                                  
> db.users.find().limit(2);                                              
{ "_id" : ObjectId("5e4948fecd56e9badcee416a"), "id" : 1, "name" : "张三" }
{ "_id" : ObjectId("5e494905cd56e9badcee416b"), "id" : 2, "name" : "李四" }

如果你们没有指定limit()方法中的参数则显示集合中的所有数据。如下:

> db.users.find().limit();
{ "_id" : ObjectId("5e4948fecd56e9badcee416a"), "id" : 1, "name" : "张三" }
{ "_id" : ObjectId("5e494905cd56e9badcee416b"), "id" : 2, "name" : "李四" }
{ "_id" : ObjectId("5e49490dcd56e9badcee416c"), "id" : 3, "name" : "王五" }
{ "_id" : ObjectId("5e494917cd56e9badcee416d"), "id" : 4, "name" : "赵六" }
{ "_id" : ObjectId("5e49492acd56e9badcee416e"), "id" : 5, "name" : "洪七" }

skip()方法

可以使用 skip() 方法来跳过指定数量的文档,skip() 方法同样接受一个数字参数作为跳过的记录条数。语法如下:

db.collection.find().skip(number)

参数说明:

  • collection:为集合名称

  • number:要跳过文档的数量

实例:查询users集合,使用skip()方法跳过两个文档。如下:

# 查看集合中所有的数据
> db.users.find()
{ "_id" : ObjectId("5e4948fecd56e9badcee416a"), "id" : 1, "name" : "张三" }
{ "_id" : ObjectId("5e494905cd56e9badcee416b"), "id" : 2, "name" : "李四" }
{ "_id" : ObjectId("5e49490dcd56e9badcee416c"), "id" : 3, "name" : "王五" }
{ "_id" : ObjectId("5e494917cd56e9badcee416d"), "id" : 4, "name" : "赵六" }
{ "_id" : ObjectId("5e49492acd56e9badcee416e"), "id" : 5, "name" : "洪七" }

# 使用 skip() 方法跳过两个文档
> db.users.find().skip(2);
{ "_id" : ObjectId("5e49490dcd56e9badcee416c"), "id" : 3, "name" : "王五" }
{ "_id" : ObjectId("5e494917cd56e9badcee416d"), "id" : 4, "name" : "赵六" }
{ "_id" : ObjectId("5e49492acd56e9badcee416e"), "id" : 5, "name" : "洪七" }

实现分页

下面将介绍怎样利用 skip() 和 limit() 方法实现查询数据分页。如下:

 db.users.find();
{ "_id" : ObjectId("5e4948fecd56e9badcee416a"), "id" : 1, "name" : "张三" }
{ "_id" : ObjectId("5e494905cd56e9badcee416b"), "id" : 2, "name" : "李四" }
{ "_id" : ObjectId("5e49490dcd56e9badcee416c"), "id" : 3, "name" : "王五" }
{ "_id" : ObjectId("5e494917cd56e9badcee416d"), "id" : 4, "name" : "赵六" }
{ "_id" : ObjectId("5e49492acd56e9badcee416e"), "id" : 5, "name" : "洪七" }

# 模拟了一个分页操作,类似mysql中的
# select  * from users limit 1,2
> db.users.find().limit(2).skip(1);
{ "_id" : ObjectId("5e494905cd56e9badcee416b"), "id" : 2, "name" : "李四" }
{ "_id" : ObjectId("5e49490dcd56e9badcee416c"), "id" : 3, "name" : "王五" }
天下之事常成于困约,而败于奢靡。——陆游
0 不喜欢
说说我的看法 -
全部评论(
没有评论
关于
本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,请来信告知:hxstrive@outlook.com
公众号