位置: 编程技术 - 正文
推荐整理分享MongoDB中游标的深入学习(mongodb游记),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:mongodb有表的概念吗,mongodb游记,mongodb有表的概念吗,mongotemplate游标查询,mongotemplate游标查询,mongodb 游标,mongodb的表,mongotemplate游标查询,内容如对您有帮助,希望把文章链接给更多的朋友!
前言
MongoDB中的游标与关系型数据库中的游标在功能上大同小异。游标相当于C语言的指针,可以定位到某条记录,在MongoDB中,则是文档。因此在mongoDB中游标也有定义,声明, 打开,读取,关闭这么个过程。客户端通过游标,能够实现对最终结果进行有效的控制,诸如限制结果数量,跳过部分结果或根据任意键按任意顺序的组合对结果进行各种排序等。
通俗的说,游标不是查询结果,可以理解为数据在遍历过程中的内部指针,其返回的是一个资源,或者说数据读取接口.
客户端通过对游标进行一些设置就能对查询结果进行有效地控制,如可以限制查询得到的结果数量、跳过部分结果、或对结果集按任意键进行排序等!
直接对一个集合调用find()方法时,我们会发现,如果查询结果超过二十条,只会返回二十条的结果,这是因为Mongodb会自动递归find() 返回的游标。
下文是针对MongoDB游标的具体介绍。
一、mongoDB游标介绍
db.collection.find()方法返回一个游标,对于文档的访问,我们需要进行游标迭代
mongoDB的游标与关系型数据库SQL中的游标类似,可以通过对游标进行(如限制查询结果数,跳过的结果数等)设置来控制查询结果
游标会消耗内存和相关系统资源,游标使用完后应尽快释放资源
在mongo shell中,如果返回的游标结果集未指定给某个var定义的变量,则,游标自动迭代次,即输出前个文档,超出的情形则需要输入it来翻页
本文内容描述手动方式来实现游标迭代来访问文档或者是用索引迭代
声明游标
var cursor = db.collectioName.find(query,projection);
打开游标
Cursor.hasNext() 判断游标是否已经取到尽头
读取数据
Cursor.Next() 取出游标的下一个文档
关闭游标
cursor.close() 此步骤可省略,通常为自动关闭,也可以显示关闭
用while循环来遍历游标示例
游标生命周期
a、游标完成匹配结果的迭代后,它会清除自身;
b、客户端的游标已经不在作用域内,驱动程序回向服务器发送一条特别的消息,让其销毁;
c、缺省情况下,游标在十分钟内没有使用,游标自动关闭或者客户端已经迭代完整个游标;
d、可以通过cursor.noCursorTimeout()来定义游标超时时间
如:var myCursor = db.users.find().noCursorTimeout()
e、对于自定义超时时长的游标可以使用cursor.close() 来关闭游标
如:db.collection.find(<query>).close()
二、当前环境及数据准备
二、使用print输出游标结果集
三、使用printjsont输出游标结果集
四、使用 forEach()进行迭代
五、基于数组索引迭代
可以使用toArray()将游标迭代文档返回到一个数组,然后通过数组下标方式进行访问。 该方法将所有由游标返回的文档装载进内存。
六、调整游标迭代次数
七、查看游标度量信息
可以通过db.serverStatus()查看游标状态相关的信息,这些信息通常包括
从服务器上次启动之后游标超时的数量
自定义游标超时的数量
游标打开后已经pinned的数量
打开游标的总数目
总结
标签: mongodb游记
本文链接地址:https://www.jiuchutong.com/biancheng/312602.html 转载请保留说明!友情链接: 武汉网站建设