前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MongoDB(15)- 查询操作里面的游标 cursor

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

作者头像
小菠萝测试笔记
发布2021-06-10 17:03:41
1.4K0
发布2021-06-10 17:03:41
举报
文章被收录于专栏:自动化、性能测试

db.collection.find() 方法里面的游标

  • 该方法最后会返回一个 cursor
  • 正常情况下,访问文档必须迭代游标

重点事项

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

迭代循环游标

直接调用变量
代码语言:javascript
复制
var myCursor = db.users.find( { type: 2 } );

myCursor
使用 cursor 的 next() 方法
代码语言:javascript
复制
var myCursor = db.users.find( { type: 2 } );

while (myCursor.hasNext()) {
   print(tojson(myCursor.next()));
}
使用 printjson() 代替 print() 方法
代码语言:javascript
复制
var myCursor = db.users.find( { type: 2 } );

while (myCursor.hasNext()) {
   printjson(myCursor.next());
}
使用 cursor 的 forEach() 方法
代码语言:javascript
复制
var myCursor =  db.users.find( { type: 2 } );

myCursor.forEach(printjson);
使用 pretty() 直接打印

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

代码语言:javascript
复制
> db.inventory.find({item : /^p/}).pretty()

常见的游标方法名

方法名

作用

hasNext

判断是否有更多的文档

next

用来获取下一条文档

toArray

将查询结构放到数组中

count

查询的结果为文档的总数量

limit

限制查询结果返回数量

skip

跳过指定数目的文档

sort

对查询结果进行排序

objsLeftlnBatch

查看当前批次剩余的未被迭代的文档数量

addOption

为游标设置辅助选项,修改游标的默认行为

hint

为查询强制使用指定索引

explain

用于获取查询执行过程报告

snapshot

对查询结果使用快照

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

以下三种情况会让游标被销毁

  • 客户端保存的游标变量不在作用域内。
  • 游标遍历完成后,或者客户端主动发送终止消息
  • 在服务器端 10 分钟内未对游标进行操作
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-06-03 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • db.collection.find() 方法里面的游标
  • 重点事项
  • 迭代循环游标
    • 直接调用变量
      • 使用 cursor 的 next() 方法
        • 使用 printjson() 代替 print() 方法
          • 使用 cursor 的 forEach() 方法
            • 使用 pretty() 直接打印
            • 常见的游标方法名
            • 以下三种情况会让游标被销毁
            相关产品与服务
            云服务器
            云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档