MongoDB快速翻页怎样做,代码是什么
Admin 2022-11-17 群英技术资讯 1375 次浏览
这篇文章主要介绍“MongoDB快速翻页怎样做,代码是什么”的相关知识,下面会通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“MongoDB快速翻页怎样做,代码是什么”文章能帮助大家解决问题。一个典型的场景是需要在你的用户界面中显示你的结果。如果你是批量处理的数据,同样重要的是要让你的分页策略正确,以便你的数据处理可以规模化。
接下来,让我们通过一个例子来看在MongoDB中翻阅数据的不同方式。在这个例子中,我们有一个CRM数据库的用户数据,我们需要通过翻阅浏览和在同一时间显示10个用户。所以实际上,我们的页面大小是10。下方是我们的用户文档的结构:
{
_id,
name,
company,
state
}
方法一:Using skip() 和 limit()
MongoDB本身支持分页操作使用 skip() 和 limit() 指令。skip(n)指令告诉MongoDB,它应该跳过“n”结果和limit(n)指令指示MongoDB,它应该限制结果长度为“n”结果。通常情况下,你将使用 skip() 和 limit() 指令,但为了说明情况,我们提供了控制台命令,这样也能达到相同的结果。同时,为了代码比较简洁,限制检查代码被排除在外。
//Page 1 db.users.find().limit (10) //Page 2 db.users.find().skip(10).limit(10) //Page 3 db.users.find().skip(20).limit(10) ........
一般来说,检索页面n,代码是这样的:
db.users.find().skip(pagesize*(n-1)).limit(pagesize)
然而,随着数据的大小增加,这种方法出现严重的性能问题。其原因是在每次执行查询时,建立了完整的结果集,那么服务器必须从收集的开始走到指定的偏移量。当偏移量增加时,这一过程会变得越来越慢。同时,这个过程没有有效地使用索引。所以,当你有较小的数据集时,典型的“skip() ”和“ limit() ”的方法是有用的。如果您正在使用大数据集,您需要考虑其他方法。
方法二:Using find() 和limit()
以前的方法不能很好扩展其原因是skip() 命令。因此,本节的目标是实现分页不使用skip()命令。为此,我们将利用在存储数据中的自然顺序,比如时间戳或文档中存储的标识。
在这个例子中,我们将使用“_id”存储每个文档。“_id”是一个MongoDB 的ObjectID结构,即 12 字节结构包含了时间戳、机械加工、进程标识符、计数器等。总体思路如下 :
检索当前页中的最后一个文档 _id
在下一个页面检索文件大于此”_id”
//Page 1
db.users.find().limit(pageSize);
//Find the id of the last document in this page
last_id = ...
//Page 2
users = db.users.find({'_id'> last_id}). limit(10);
//Update the last id with the id of the last document in this page
last_id = ...
这种方法利用内在的规则存在_id字段。也因为“_id”字段是默认的查找操作,它是非常好的性能指标。如果你使用的字段没有被索引,那么你在操作中会受到困扰,所以确保字段被索引是非常重要的。
同样,如果你希望数据按照特定顺序进行排序分页的话,那么你还可以使用sort()条款与上述技术。重要的是要确保排序过程是利用索引来获得最佳性能。您可以使用.explain()后缀来查询。
users = db.users.find({'_id'> last_id}). sort(..).limit(10);
//Update the last id with the id of the last document in this page
last_id = ...
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
我们在使用MongoDB时,经常需要进行MongoDB多表关联查询,因此多表关联查询也是需要掌握的内容,本文就给大家分享一下MongoDB多表关联查询实例,有需要的朋友可以看看。
MongoDB数据库删除文档的三种方法:1、remove()方法;2、deleteOne()方法;3、deleteMany()方法,其中deleteOne()方法和deleteMany()方法都是官方推荐删除文档的方法。
MongoDB 管理工具: Rockmongo RockMongo是PHP5写的一个MongoDB管理工具。 通过 Rockmongo 你可以管理 MongoDB服务,数据库,集合,文档,索引等等。 它提供了非常人性化的操作。类似 phpMyAdmin(PHP开发的MySql管理工具)。 Rockmongo 下载地址:https://github.com/iwind/rockmongo 简介 主要特征: 使用宽松的New BSD..
关闭mongodb端口的方法:1、使用ps -ef | grep mongo命令查看mongo相关进程。2、使用“kill <进程号>”命令关闭mongodb进程。
MongoDB 自动增长 MongoDB 没有像 SQL 一样有自动增长的功能, MongoDB 的 _id 是系统自动生成的12字节唯一标识。 但在某些情况下,我们可能需要实现 ObjectId 自动增长功能。 由于 MongoDB 没有实现这个功能,我们可以通过编程的方式来实现,以下我们将在 counters 集合中实现_id字段自动增长。 使用 counters 集合 考虑以下 products 文档。我们希望 _id 字..
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 ICP核准(ICP备案)粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008