Menu Docs
Página inicial do Docs
/
Manual do MongoDB
/ / /

matarCursores

Nesta página

  • Definição
  • Compatibilidade
  • Sintaxe
  • Campos de comando
  • Acesso necessário
  • killCursors e transação
  • Exemplo
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> } ) .

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 para todos os comandos, consulte Comandos sem suporte.

  • 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

O comando tem a seguinte sintaxe:

db.runCommand(
{
killCursors: <collection>,
cursors: [ <cursor id1>, ... ], comment: <any>
}
)

O comando utiliza os seguintes campos:

Campo
Tipo
Descrição
killCursors
string
O nome da collection.
cursors
array
As ID do cursor para matar.
comment
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).

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.

Se um usuário tiver o privilégio , ele poderá matar cursores criados por qualquer killAnyCursor usuário.

Para ver quais funções e privilégios do Atlas concedem o killAnyCursor privilégio do,consulte Funções e privilégios integrados na documentação do Atlas .

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.

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
}

Voltar

getParameter