killCursors

On this page本页内容

New in version 3.2.版本3.2中的新功能。

Definition定义

killCursors

Kills the specified cursor or cursors for a collection. MongoDB drivers use the killCursors command as part of the client-side cursor implementation.

Note

In general, applications should not use the killCursors command directly.

The killCursors command must be run against the database of the collection whose cursors you wish to kill.

To run killCursors, use the db.runCommand( { <command> } ) method.

The command has the following form:

db.runCommand( { "killCursors": <collection>, "cursors": [ <cursor id1>, ... ], comment: <any> } )
Field字段Type类型Description描述
killCursors string The name of the collection.
cursors array The ids of the cursors to kill.
comment any

Optional.可选。A user-provided comment to attach to this command. Once set, this comment appears alongside records of this command in the following locations:

A comment can be any valid BSON type (string, integer, object, array, etc).

New in version 4.4.版本4.4中的新功能。

Required Access

Kill Own Cursors

  • In MongoDB 4.2 and later, users can always kill their own cursors, regardless of whether the users have the privilege to killCursors. Cursors are associated with the users at the time of cursor creation.
  • In MongoDB 3.6.3 through MongoDB 4.0.x, users require killCursors privilege to kill their own cursors. Cursors are associated with the users at the time of cursor creation.

Kill Any Cursor

If a user possesses the killAnyCursor privilege, that user may kill any cursor, even cursors created by other users.

killCursors and Transactions

Starting in MongoDB 4.2, you cannot specify killCursors as the first operation in a transaction.

Example示例

Consider the following find operation on the test.restaurants collection:

use test
db.runCommand(
   { find: "restaurants",
     filter: { stars: 5 },
     projection: { name: 1, rating: 1, address: 1 },
     sort: { name: 1 },
     batchSize: 5
   }
)

which returns the following:

{
   "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
}

To kill this cursor, use the killCursors command.

use test

db.runCommand( { killCursors: "restaurants", cursors: [ NumberLong("18314637080") ] } )

killCursors returns the following operation details:

{
   "cursorsKilled" : [
      NumberLong("18314637080")
   ],
   "cursorsNotFound" : [ ],
   "cursorsAlive" : [ ],
   "cursorsUnknown" : [ ],
   "ok" : 1
}