Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.
Menu Docs

db.killOp() (método mongosh)

db.killOp(opid)

Termina uma operação conforme especificado pelo ID da operação. Para encontrar operações e seus ID correspondentes, consulte $currentOp ou db.currentOp().

The db.killOp() method has the following parameter:

Parâmetro
Tipo
Descrição

op

número

Um ID de operação.

Aviso

Terminate running operations with extreme caution. Only use db.killOp() to terminate operations initiated by clients and do not terminate internal database operations.

Esse método está disponível em implantações hospedadas nos seguintes ambientes:

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

Importante

O MongoDB Atlas limita o uso desse método ao usuário do MongoDB que executou a operação. 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

The db.killOp() method can be run on a mongos and can kill queries (read operations) that are running on more than one shard in a cluster.

Por exemplo, para matar uma operação de consulta em um agrupamento fragmentado:

  1. No mesmo mongos onde o cliente enviou a query, localize a opção da operação de query para encerrar executando o aggregation pipeline $currentOp com localOps: true:

    use admin
    db.aggregate( [
    { $currentOp : { allUsers: true, localOps: true } },
    { $match : <filter condition> } // Optional. Specify the condition to find the op.
    // e.g. { op: "getmore", "command.collection": "someCollection" }
    ] )

    Importante

    Você deve emitir esta operação de aggregation no mesmo mongos onde o cliente enviou a query.

  2. Once you find the query operation to kill, issue db.killOp() with the opid on the mongos:

    db.killOp(<opid of the query to kill>)

Dica

O parâmetro localOps em $currentOp.

Como alternativa, você pode localizar e encerrar a operação de leitura de um membro do shard onde a operação está em execução. O MongoDB propaga a operação kill para os outros fragmentos e instâncias mongos :

  1. Em um dos fragmentos onde a operação está sendo executada, localize o opid da operação de query para eliminar:

    use admin
    db.aggregate( [
    { $currentOp : { allUsers: true } },
    { $match : <filter condition> } // Optional. Specify the condition to find the op.
    // e.g. { op: "getmore", "command.collection": "someCollection" }
    ] )
  2. Once you find the query operation to kill, issue db.killOp() with the opid on the shard member:

    db.killOp(<opid of the query to kill>)

    O MongoDB propaga a operação de eliminação para os outros fragmentos e as instâncias do mongos.

Dentro de uma sessão

Os drivers do MongoDB associam todas as operações a uma sessão do servidor, com exceção das gravações não reconhecidas.

Se a operação de gravação estiver associada a uma sessão, você poderá usar o comando killSessions no mongos para matar a operação de gravação em fragmentos.

  1. Execute o pipeline de agregação $currentOp no mongos para localizar o lsid (ID da sessão lógica).

    use admin
    db.aggregate( [
    { $currentOp : { allUsers: true, localOps: true } },
    { $match : <filter condition> } // Optional. Specify the condition to find the op.
    // e.g. { "op" : "update", "ns": "mydb.someCollection" }
    ] )
    1. Utilizando as informações do lsid retornadas, emita o comando killSessions no mongos para matar a operação nos fragmentos.

      db.adminCommand( { killSessions: [
      { "id" : UUID("80e48c5a-f7fb-4541-8ac0-9e3a1ed224a4"), "uid" : BinData(0,"47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=") }
      ] } )
Sem uma sessão

Se a operação de gravação não estiver associada a uma sessão, você deverá localizar e matar a operação em todos os fragmentos associados à gravação.

  1. Em um mongos, execute o aggregation pipeline $currentOp para localizar o(s) opid(s) da query nos fragmentos:

    use admin
    db.aggregate( [
    { $currentOp : { allUsers: true } },
    { $match : <filter condition> } // Optional. Specify the condition to find the op.
    ] )

    Ao executar em um mongos, $currentOp retorna as opções no formato de "<shardName>:<opid on that shard>"; por exemplo,

    {
    "shard" : "shardB",
    ..
    "opid" : "shardB:79214",
    ...
    },
    {
    "shard" : "shardA",
    ..
    "opid" : "shardA:100913",
    ...
    },
  2. Using the opid information, issue db.killOp() on the mongos to kill the operation on the shards.

    db.killOp("shardB:79014");
    db.killOp("shardA:100813");

Em sistemas executados com authorization , para eliminar operações que não pertencem ao usuário, o usuário deve ter acesso que inclua a ação de privilégio killop .

Em instâncias do mongod , os usuários podem matar suas próprias operações mesmo sem a ação de privilégio do killop .