zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

MongoDB(15)- 查询操作里面的游标 cursor

MongoDB 操作 查询 15 里面 游标 cursor
2023-09-27 14:25:58 时间
db.collection.find() 方法里面的游标该方法最后会返回一个 cursor正常情况下 访问文档必须迭代游标

 

重点事项当调用 find() 函数时 Shell 并不立即查询数据库 而是等真正开始获取结果时才发送查询请求游标对象的每个方法几乎都会返回游标对象本身 这样可以方便进行链式函数的调用在 MongoDB Shell 中使用游标输出文档包含两种情况 如果不将 find() 函数返回的游标赋值给一个局部变量进行保存 在默认情况下游标会自动迭代 20 次。如果将 find() 函数返回的游标赋值给一个局部变量 则可以使用游标对象提供的函数进行手动迭代。使用清空后的游标 进行迭代输出时 显示的内容为空游标从创建到被销毁的整个过程存在的时间 被称为游标的生命周期 包括游标的创建、使用及销毁三个阶段。当客户端使用 find() 函数向服务器端发起一次查询请求时 会在服务器端创建一个游标 然后就可以使用游标函数来操作查询结果

 

迭代循环游标直接调用变量

var myCursor db.users.find( { type: 2 } );


myCursor


image.png

使用 cursor 的 next() 方法
var myCursor db.users.find( { type: 2 } );

while (myCursor.hasNext()) {

 print(tojson(myCursor.next()));

}


image.png

使用 printjson() 代替 print() 方法
var myCursor db.users.find( { type: 2 } );

while (myCursor.hasNext()) {

 printjson(myCursor.next());

}

image.png

使用 cursor 的 forEach() 方法

var myCursor  db.users.find( { type: 2 } );


myCursor.forEach(printjson);

image.png

使用 pretty() 直接打印

这不香吗 为什么要用游标还写代码 搞不懂搞不懂

db.inventory.find({item : /^p/}).pretty()

image.png


常见的游标方法名方法名作用hasNext判断是否有更多的文档next用来获取下一条文档toArray将查询结构放到数组中count查询的结果为文档的总数量limit限制查询结果返回数量skip跳过指定数目的文档sort对查询结果进行排序objsLeftlnBatch查看当前批次剩余的未被迭代的文档数量addOption为游标设置辅助选项 修改游标的默认行为hint为查询强制使用指定索引explain用于获取查询执行过程报告snapshot对查询结果使用快照

后面会对常用的游标方法进行详解

 

以下三种情况会让游标被销毁客户端保存的游标变量不在作用域内。游标遍历完成后 或者客户端主动发送终止消息在服务器端 10 分钟内未对游标进行操作

 


node操作mongoDB基础知识 进入官网下载 MongoDB(根据电脑系统安装对应的 MongoDB 版本)。开始安装。 配置环境变量(将 MongoDB 的 bin 目录的路径配置在环境变量中)。 测试(在 cmd 中输入 mongod --version 查看 MongoDB 的版本)。