Definição
killCursorsKills the specified cursor or cursors for a collection. MongoDB drivers use the
killCursorscommand as part of the client-side cursor implementation.Aviso
Os aplicativos normalmente não devem executar o comando
killCursorsdiretamente. Em vez disso, deixe o driver lidar automaticamente com o gerenciamento do cursor.O comando
killCursorsdeve ser executado no banco de dados da collection cujos cursores você deseja eliminar.Para executar o killCursors, use o método
db.runCommand( { <command> } ).
Compatibilidade
Esse comando está disponível em implantações hospedadas nos seguintes ambientes:
- MongoDB Atlas: The fully managed service for MongoDB deployments in the cloud
Observação
This command is supported in all MongoDB Atlas clusters. For information on Atlas support for all commands, see Unsupported Commands.
MongoDB Enterprise: a versão autogerenciada e baseada em assinatura do MongoDB
MongoDB Community: uma versão com código disponível, de uso gratuito e autogerenciada do MongoDB
Sintaxe
O comando tem a seguinte sintaxe:
db.runCommand( { killCursors: <collection>, cursors: [ <cursor id1>, ... ], comment: <any> } )
Campos de comando
O comando utiliza os seguintes campos:
Campo | Tipo | Descrição |
|---|---|---|
| string | O nome da collection. |
| array | As ID do cursor para matar. |
| any | Opcional. Um comentário fornecido pelo usuário para anexar a este comando. Depois de definido, esse comentário aparece junto com os registros desse comando nos seguintes locais:
Um comentário pode ser qualquer tipo BSON válido (string, inteiro, objeto, array etc). |
Acesso necessário
Eliminar os próprios cursores
Os usuários sempre podem eliminar seus próprios cursores, independentemente de terem o privilégio killCursors . Os cursores estão associados aos usuários no momento da criação do cursor.
Elimine qualquer cursor
Se um usuário tiver o privilégio , ele poderá matar cursores criados por qualquer killAnyCursor usuário.
killCursors e transação
You cannot specify the killCursors command as the first operation in a transaction.
Além disso, se você executar o comando killCursors em uma transação, o servidor interromperá imediatamente os cursores especificados. Não espera que a transação seja confirmada.
Exemplo
Considere a seguinte operação find na collection test.restaurants :
use test db.runCommand( { find: "restaurants", filter: { stars: 5 }, projection: { name: 1, rating: 1, address: 1 }, sort: { name: 1 }, batchSize: 5 } )
que retorna o seguinte:
{ "waitedMS" : Long(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" : Long("18314637080"), "ns" : "test.restaurants" }, "ok" : 1 }
To kill this cursor, use the killCursors command.
use test db.runCommand( { killCursors: "restaurants", cursors: [ Long("18314637080") ] } )
killCursors retorna os seguintes detalhes da operação:
{ "cursorsKilled" : [ Long("18314637080") ], "cursorsNotFound" : [ ], "cursorsAlive" : [ ], "cursorsUnknown" : [ ], "ok" : 1 }