Menu Docs

Página inicial do DocsDesenvolver aplicaçõesManual 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.

Observação

Em geral, os aplicativos não devem utilizar o comando killCursors diretamente.

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> } ) .

Este comando está disponível em sistemas hospedados nos seguintes ambientes:

  • MongoDB Atlas: o serviço totalmente gerenciado para implantações do MongoDB na nuvem

Observação

Este comando é suportado em todos os clusters do MongoDB Atlas. Para obter informações sobre 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

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
qualquer

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 de killCursors. Os cursores estão associados aos usuários no momento da criação do cursor.

Se um usuário possuir o privilégio killAnyCursor , esse usuário poderá matar qualquer cursor, até mesmo cursores criados por outros usuários.

Você não pode especificar killCursors como a primeira operação em uma transação.

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
}
← Obter parâmetro
killOp →