当前位置: 首页 > news >正文

Mongodb使用killCursors停止运行的cursor

        cursor指向查询结果的游标,通过游标向下移动,获得下一条查询结果。MongoDB分批向用户返回数据结果。通过游标的移动, mongodb确定当前返回结果的位置,是否要加载更多数据到内存当中。cursor有默认的超时时间, 超时后cursor会自动停止。当然,用户也可以手动使用killCursors命令,停止未完成的cursor.

killCursors功能

        停止指定的游标或某个集合的游标。

        各种Mongodb连接工具,基于killCursors命令,实现游标的部分操作。应用程序中,通常应用不会直接调用killCursors命令,而是数据库管理或开发人员,来运行killCurors命令,停止掉对数据库性能产生影响或长时间运行的cursor。

        为了减少影响,降低风险,执行killCursors命令必须在当前集合所在的数据库中执行。

语法

db.runCommand({    killCursors: <collection>,    cursors: [<cursor id1>, ...],    comment: <any>
})

        其中,使用killCursors指定本次操作针对的集合名称。 字段cursors包含cursor id数组。comment是可选字段,用户对本次操作的一些备注和说明。可以是BSON类型中的任何一种数据类型。添加备注说明时,可以在下面的三个位置查看

  • Mongodb日志中,attr.command.cursor.comment字段
  • Database profile输出的command.comment字段
  • currentOp输出的command.comment字段

用户权限

        使用killCursors时,用户需要拥有相应的权限。

停止当前用户创建的游标

  • 4.2及以后得版本,当前用户有权限停止自己创建的游标。当用户使用查询语句创建游标时,游标即与当前用户建立关联关系
  • 4.0及以前版本,用户需要有killCursors权限,才能停掉自己创建的游标。同样,与4.2版本想用,用户使用查询语句创建游标时,游标即与当前用户建立关联关系。

停止其他用户创建的游标

        用户需要有killAnyCursor权限

应用举例

  • 创建游标
use testdb.runCommand({find: "resturants",filter: {stars: 5},projection: {name:1, rating: 1,address:1},sort: { name: 1},batchSize: 5
}) //返回
{"waitedMS" : NumberLong(0),   "cursor" : {      "firstBatch" : [{            "_id" : ObjectId("57506d63f578028074723dfd"),            "name" : "Cakes and more"         },{"_id" : ObjectId("57506d63f578028074723e0b"),"name" : "Pies and things"},{"_id" : ObjectId("57506d63f578028074723e1d"),"name" : "Ice Cream Parlour"},{"_id" : ObjectId("57506d63f578028074723e65"),"name" : "Cream Puffs"},{"_id" : ObjectId("57506d63f578028074723e66"),"name" : "Cakes and Rolls"}],"id" : NumberLong("18314637080"),"ns" : "test.restaurants"},   "ok" : 1
}
  • 使用killCursors停止游标
use test
db.runCommand({    killCusors: "restaurants",   cusors: [NumberLong("18314637080")]
})

http://www.lryc.cn/news/247705.html

相关文章:

  • 电脑风扇转一下停一下,无法正常开机问题解决
  • 无需部署服务器,如何结合内网穿透实现公网访问导航页工具Dashy
  • Go GORM简介
  • 前端量子纠缠 效果炸裂 multipleWindow3dScene
  • 第十七章 处理空字符串和 Null 值 - XMLIGNORENULL、XMLNIL 和 XMLUSEMPTYELEMENT 的详细信息
  • Asp.net core WebApi 配置自定义swaggerUI和中文注释
  • Xilinx SDK获取代码运行时间
  • 【力扣】189. 轮转数组
  • Spring 拾枝杂谈—Spring原生容器结构剖析(通俗易懂)
  • Java核心知识点整理大全22-笔记
  • qt 5.15.2读取csv文件功能
  • 【Vue】绝了!还有不懂生命周期的?
  • 关于IP与端口以及localhost
  • 如何进行MySQL的主从复制(MySQL5.7)
  • 5:kotlin 类(Classes )
  • 达梦:【1】达梦常用操作
  • 数字人透明屏幕的技术原理是什么?
  • 提升APP软件的用户体验方法
  • JVM运行时数据区域、对象内存分配、内存溢出异常总结
  • 【C++设计模式】单例模式singleton
  • CVPR 2023 精选论文学习笔记:Post-Training Quantization on Diffusion Models
  • Python基础语法之学习字符串快速格式化
  • Ubuntu22.04 server版本关闭DHCP,手动设置ip
  • 贪心算法(新坑)
  • C 语言头文件
  • MySQL中自增id用完怎么办?
  • C语言常见算法
  • 0-1背包的初始化问题
  • API之 要求接口上传pdf 以 合同PDF的二进制数据,multpart方式上传
  • C语言-求阶乘序列前N项和