Mongodb如何使用killCursors停止运行的cursor

 更新时间:2023年12月04日 14:41:05   作者:威赞  
MongoDB分批向用户返回数据结果,通过游标的移动, mongodb确定当前返回结果的位置,是否要加载更多数据到内存当中,这篇文章主要介绍了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 test
db.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")]
})

到此这篇关于Mongodb使用killCursors停止运行的cursor的文章就介绍到这了,更多相关Mongodb使用killCursors停止运行的cursor内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • mongos崩溃后无法重启问题的解决方法

    mongos崩溃后无法重启问题的解决方法

    这篇文章主要给大家介绍了关于mongos崩溃后无法重启问题的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02
  • 利用golang驱动操作MongoDB数据库的步骤

    利用golang驱动操作MongoDB数据库的步骤

    这篇文章主要给大家介绍了关于如何利用golang驱动操作MongoDB数据库的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • mongodb中根据时间过滤进行查询的操作方法

    mongodb中根据时间过滤进行查询的操作方法

    这篇文章主要介绍了mongodb中简单的根据时间过滤进行查询,文末补充介绍了如何根据日期过滤/查找MongoDB中的记录,结合实例给大家介绍的非常详细,需要的朋友可以参考下
    2023-05-05
  • mongodb增删改查详解_动力节点Java学院整理

    mongodb增删改查详解_动力节点Java学院整理

    这篇文章主要介绍了mongodb增删改查详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • MongoDB中的主从同步配置和mongod相关启动命令讲解

    MongoDB中的主从同步配置和mongod相关启动命令讲解

    这篇文章主要介绍了MongoDB中的主从同步配置和mongod相关启动命令讲解,文中也罗列了很多其他常用的mongod命令参数,需要的朋友可以参考下
    2016-03-03
  • centos8安装MongoDB的详细过程

    centos8安装MongoDB的详细过程

    MongoDB由MongoDB Inc开发,并根据SSPL(服务器端公共许可证)进行分发,是一个开源,跨平台,面向文档的数据库管理系统,本文重点给大家介绍centos8安装MongoDB的详细过程,感兴趣的朋友一起看看吧
    2021-10-10
  • MongoDB按时间分组操作实战

    MongoDB按时间分组操作实战

    MongoDB支持使用聚合操作来统计数据,下面这篇文章主要给大家介绍了关于MongoDB按时间分组操作的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-05-05
  • 十个提高MongoDB安全性的配置技巧

    十个提高MongoDB安全性的配置技巧

    这篇文章主要介绍了十个提高MongoDB安全性的配置技巧,需要的朋友可以参考下
    2014-10-10
  • MongoDB分片在部署与维护管理中常见的事项总结大全

    MongoDB分片在部署与维护管理中常见的事项总结大全

    分片(sharding)是指将数据拆分,将其分散存放在不同的机器上的过程。下面这篇文章主要给大家总结介绍了关于MongoDB分片在部署与维护管理中常见事项的相关资料,文中通过图文以及示例代码介绍的非常详细,需要的朋友可以参考下
    2018-09-09
  • MongoDB的mongo shell常用操作方法及操作脚本笔记

    MongoDB的mongo shell常用操作方法及操作脚本笔记

    mongo shell即相当于SQL语句在关系型数据库中的作用,MongoDB使用JavaScript作为shell操作命令,这里我们就来整理MongoDB的mongo shell常用操作方法及操作脚本笔记
    2016-07-07

最新评论