matarCursores
Nesta página
Definição
killCursors
Mata o cursor ou cursores especificados para uma collection. Os drivers do MongoDB usam o comando
killCursors
como parte da implementação do cursor do lado do cliente.Aviso
Os aplicativos normalmente não devem executar o comando
killCursors
diretamente. Em vez disso, deixe o driver lidar automaticamente com o gerenciamento do cursor.O comando
killCursors
deve 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: o serviço totalmente gerenciado para implantações do MongoDB na nuvem
Observação
Este comando é aceito em todos os clusters do MongoDB Atlas. Para obter informações sobre o suporte do Atlas a todos os comandos, consulte Comandos não suportados.
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
Você não pode especificar o comando como a primeira operação em killCursors
uma transação.
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" : 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 }
Para matar este cursor, utilize o comando killCursors
.
use test db.runCommand( { killCursors: "restaurants", cursors: [ NumberLong("18314637080") ] } )
killCursors
retorna os seguintes detalhes da operação:
{ "cursorsKilled" : [ NumberLong("18314637080") ], "cursorsNotFound" : [ ], "cursorsAlive" : [ ], "cursorsUnknown" : [ ], "ok" : 1 }