cursor指向查询结果的游标,通过游标向下移动,获得下一条查询结果。MongoDB分批向用户返回数据结果。通过游标的移动, mongodb确定当前返回结果的位置,是否要加载更多数据到内存当中。cursor有默认的超时时间, 超时后cursor会自动停止。当然,用户也可以手动使用killCursors命令,停止未完成的cursor.
停止指定的游标或某个集合的游标。
各种Mongodb连接工具,基于killCursors命令,实现游标的部分操作。应用程序中,通常应用不会直接调用killCursors命令,而是数据库管理或开发人员,来运行killCurors命令,停止掉对数据库性能产生影响或长时间运行的cursor。
为了减少影响,降低风险,执行killCursors命令必须在当前集合所在的数据库中执行。
- db.runCommand({
- killCursors: <collection>,
- cursors: [<cursor id1>, ...],
- comment: <any>
- })
其中,使用killCursors指定本次操作针对的集合名称。 字段cursors包含cursor id数组。comment是可选字段,用户对本次操作的一些备注和说明。可以是BSON类型中的任何一种数据类型。添加备注说明时,可以在下面的三个位置查看
使用killCursors时,用户需要拥有相应的权限。
用户需要有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
- }
- use test
- db.runCommand({
- killCusors: "restaurants",
- cusors: [NumberLong("18314637080")]
- })