Go教程

【赵强老师】如何在MongoDB中使用游标查询数据

本文主要是介绍【赵强老师】如何在MongoDB中使用游标查询数据,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

一、什么是游标?

游标(Cursor)是处理数据的一种方法,为了查看或者处理结果集中的数据,游标提供了在结果集中一次一行或者多行前进或向后浏览数据的能力。

游标实际上是一种能从包括多条数据记录的结果集中每次提取一条记录的机制。游标可以被看作是一个查询结果集(可以是零条、一条或由相关的选择语句检索出的多条记录)和结果集中指向特定记录的游标位置组成的一个临时文件,提供了在查询结果集中向前或向后浏览数据、处理结果集中数据的能力。有了游标,用户就可以访问结果集中任意一行数据,在将游标放置到某行之后,可以在该行或从该位置的行块上执行操作。

二、MongoDB的游标

在MongoDB中,使用db.collection.find()方法将返回一个游标。如果要访问文档,我们需要使用游标的迭代器。但是,在mongo shell中,如果没有给返回的游标指定变量,游标将自动首先返回前20条记录。下面我们通过几个具体的例子,来说明如何使用游标。

  • 定义游标
var mycursor = db.emp.find()

  • 使用游标访问文档
var mycursor = db.emp.find()
while(mycursor.hasNext()){
	printjson(mycursor.next())
}

也可以像这样:mycursor.forEach(printjson)

  • 游标和数组
var mycursor = db.emp.find()  定义游标
var myarray  = mycursor.toArray() 将游标转成数组
var myDocument = myarray[3]       通过数组元素访问文档

  • 分页查询: skip和limit
每页显示5条记录
var mycursor = db.emp.find().limit(5)          第一页
var mycursor = db.emp.find().limit(5).skip(5)  第二页

关闭游标:默认情况下,10分钟内没有使用使用的游标会被自动关闭。可以使用.noCursorTimeout()来设置游标的关闭选项,这时就需要手动关闭游标。

var mycursor = db.emp.find().noCursorTimeout()

这篇关于【赵强老师】如何在MongoDB中使用游标查询数据的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!