db.collection.find() 可以实现根据条件查询和指定使用投影运算符返回的字段省略此参数返回匹配文档中的所有字段。并返回到匹配文档的游标,可以随意修改查询限制、跳跃、和排序顺序的功能。
为了完成本关任务,你需要掌握: 1.什么是游标; 2.如何使用游标。
什么是游标
通俗的说,游标不是查询结果,而是查询的返回资源,或者接口。通过这个接口,你可以逐条读取。就像 fopen 打开文件,得到一个资源一样,通过资源,可以一行一行的读文件。
使用循环插入数据
我们首先插入10000条数据到集合 items,因为 mongodb 底层是 javascript 引擎,所以我们可以使用 js 的语法来插入数据:
for(var i=0;i<10000;i++)db.items.insert({_id:i,text:"Hello MongoDB"+i})
插入后查看效果,如图1所示:
图 1
声明游标
定义一个变量来保存这个游标,find 的查询结果(_id<=5
)赋值给了游标 cursor 变量,代码如下:
var cursor=db.items.find({_id:{$lte:5}})
打印游标中的数据信息
有四种方法进行打印:
- printjson(cursor.next()) 打印下一条数据,如图 2 所示:
图 2
注意:当取完游标中的数据,又进行打印,会报错。
- 使用 js 的 while 语法来循环打印,具体步骤如图 3 所示:
图 3
- 使用 for 循环打印,具体步骤如图 4 所示:
图 4
- 使用 forEach 打印,具体步骤如图 5 所示:
图 5
游标的使用场景
我们可以在分页的情况下使用游标。
假设每页有10行,我们查询第701页,可以配合 skip() 和 limit() 来实现,具体步骤如图6所示:
图 6
如果不想全部取出,只取出某一个,可以使用如下方法,取出数组下标,具体步骤如图7所示:
图 7