Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

db.killOp() (método mongosh)

db.killOp(opid)

Termina una operación según lo especificado por el ID de operación. Para encontrar las operaciones y sus IDs correspondientes, consulta $currentOp o db.currentOp().

El método tiene el siguiente db.killOp() parámetro:

Parameter
Tipo
Descripción

op

Número

Una ID de operación.

Advertencia

Finalice las operaciones en ejecución con extrema precaución. Utilice únicamente para finalizar las operaciones db.killOp() iniciadas por los clientes y no finalice las operaciones internas de la base de datos.

Este método está disponible en implementaciones alojadas en los siguientes entornos:

  • MongoDB Atlas: El servicio totalmente gestionado para implementaciones de MongoDB en la nube

Importante

MongoDB Atlas limita el uso de este método al usuario de MongoDB que ejecutó la operación. Para obtener información sobre el soporte de Atlas para todos los comandos, consulte Comandos no admitidos.

  • MongoDB Enterprise: La versión basada en suscripción y autogestionada de MongoDB

  • MongoDB Community: La versión de MongoDB con código fuente disponible, de uso gratuito y autogestionada.

El db.killOp() método se puede ejecutar en un y puede eliminar consultas (operaciones mongos de lectura) que se estén ejecutando en más de un fragmento en un clúster.

Por ejemplo, para abortar una operación de consulta en un clúster:

  1. En el mismo mongos donde el cliente ejecutó la query, debe localizar el opid de la operación de query a interrumpir ejecutando el pipeline de agregación $currentOp con el 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

    Debes emitir esta operación de agregación en el mismo mongos donde el cliente emitió la query.

  2. Una vez que encuentre la operación de consulta que desea cancelar, emita con el opid db.killOp() en mongos el:

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

Tip

El parámetro localOps en $currentOp.

Como alternativa, puede buscar y matar la operación de lectura en un nodo de la partición donde se esté ejecutando la operación. MongoDB propaga la operación de terminación a las otras particiones y mongos instancias:

  1. En una de las particiones donde se está ejecutando la operación, encuentra el opid de la operación de query que se va a 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. Una vez que encuentre la operación de consulta que desea eliminar, emita con el opid en el miembro del db.killOp() fragmento:

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

    MongoDB propaga la operación de eliminación a las otras particiones e instancias mongos.

Dentro de una sesión

Los drivers de MongoDB asocian todas las operaciones con una sesión de servidor, con la excepción de las escrituras no reconocidas.

Si la operación de escritura está asociada a una sesión, puedes utilizar el comando killSessions en el mongos para cancelar la operación de escritura entre particiones.

  1. Ejecutar la pipeline de agregación $currentOp en el mongos para encontrar el lsid (ID de sesión 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 la información devuelta lsid, emitir el comando killSessions en el mongos para detener la operación en las particiones.

      db.adminCommand( { killSessions: [
      { "id" : UUID("80e48c5a-f7fb-4541-8ac0-9e3a1ed224a4"), "uid" : BinData(0,"47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=") }
      ] } )
Sin una sesión

Si la operación de escritura no está asociada a una sesión, debes encontrar y cancelar la operación en todas las particiones asociadas con el guardado.

  1. Desde un mongos, ejecute el pipeline de agregación $currentOp para encontrar el/los opid(s) de la operación de query en las particiones:

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

    Cuando se ejecuta en un mongos, $currentOp devuelve los opids en el formato de "<shardName>:<opid on that shard>";, p. ej.,

    {
    "shard" : "shardB",
    ..
    "opid" : "shardB:79214",
    ...
    },
    {
    "shard" : "shardA",
    ..
    "opid" : "shardA:100913",
    ...
    },
  2. Utilizando la información de opid, emita db.killOp() en el para cancelar la operación en los mongos fragmentos.

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

En los sistemas que se ejecutan con authorization, para terminar operaciones que no pertenecen al usuario, este debe tener acceso que incluya la acción de privilegio killop.

En las instancias mongod, los usuarios pueden finalizar sus propias operaciones incluso sin la acción de privilegio killop.