当前位置: 代码网 > it编程>数据库>Nosql > Mongodb如何使用killCursors停止运行的cursor

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

2024年05月15日 Nosql 我要评论
cursor指向查询结果的游标,通过游标向下移动,获得下一条查询结果。mongodb分批向用户返回数据结果。通过游标的移动, mongodb确定当前返回结果的位置,是否要加载更多数据到内存当中。cur

        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内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com