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")]
})

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Robo 3T是一款用于MongoDB的图形化客户端工具,它提供了一个直观的界面来管理和操作MongoDB数据库。以下是使用Robo 3T连接并运行命令的基本步骤[^1]: 1. **安装Robo 3T**:首先,你需要下载并安装Robo 3T,可以从其官方网站下载对应版本的安装包。 2. **启动MongoDB**:确保MongoDB服务器已经按照你的配置文件启动,如[引用1]所示,通过`./bin/mongod --config mongodb.conf`命令启动。 3. **打开Robo 3T**:安装完成后,打开Robo 3T,点击"Connect"按钮,然后输入MongoDB服务器的地址(通常是localhost),默认端口27017。 4. **连接到数据库**:在连接窗口中,选择或输入你的数据库名称(默认可能是"admin"或"test"),然后点击"Connect"。 5. **查看或操作数据**:一旦连接成功,Robo 3T会显示你的数据库结构,你可以浏览集合(collections),查看文档(documents),插入新数据,或者执行查询。对于图数据,如果你有支持图形模型的数据库,比如`graph.collections`,可以在这里创建、编辑和查询图数据。 6. **执行图操作**:例如,要查找最大边值,可能需要查询特定图的属性,Robo 3T通常不直接提供图形查询功能,但你可以编写和执行MongoDB的聚合管道(aggregation pipeline)来实现复杂的图形分析。 请注意,Robo 3T并不直接支持图形查询,如果需要处理图形数据,可能需要编写相应的查询脚本并在命令行工具或使用专门的图形数据库查询工具。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

威赞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值