Definición
killCursorsElimina el cursor o cursores especificados de una colección. Los drivers de MongoDB utilizan el
killCursorscomando como parte de la implementación del cursor del lado del cliente.Advertencia
Normalmente, las aplicaciones no deberían ejecutar el comando
killCursorsdirectamente. En su lugar, deberían dejar que el controlador gestione automáticamente el cursor.El comando
killCursorsdebe ser ejecutado en la base de datos de la colección cuyos cursores desea terminar.Para ejecutar killCursors, utilice el
db.runCommand( { <command> } ).
Compatibilidad
Este comando está disponible en implementaciones alojadas en los siguientes entornos:
MongoDB Atlas: El servicio totalmente gestionado para implementaciones de MongoDB en la nube
Nota
Este comando es compatible con todos los clústeres de MongoDB Atlas. Para obtener información sobre el soporte de Atlas para todos los comandos, consulte Comandos no compatibles.
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.
Sintaxis
El comando tiene la siguiente sintaxis:
db.runCommand( { killCursors: <collection>, cursors: [ <cursor id1>, ... ], comment: <any> } )
Campos de comandos
El comando toma los siguientes campos:
Campo | Tipo | Descripción |
|---|---|---|
| string | El nombre de la colección. |
| arreglo | Los identificadores de los cursores que se deben eliminar. |
| any | Opcional. Un comentario proporcionado por el usuario para adjuntar a este comando. Una vez configurado, este comentario aparece junto a los registros de este comando en las siguientes ubicaciones:
Un comentario puede ser de cualquier tipo BSON válido (string, objeto, arreglo, etc.). |
Acceso requerido
Eliminar propios cursores
Los usuarios siempre pueden eliminar sus propios cursores, independientemente de si tienen el privilegio killCursors. Los cursores se asocian con los usuarios en el momento de la creación del cursor.
Matar cualquier cursor
Si un usuario tiene el privilegio, puede matar los cursores creados por cualquier killAnyCursor usuario.
killCursors y Transacciones
No se puede especificar el comando como la primera operación en killCursors una transacción.
Además, si ejecutas el comando killCursors dentro de una transacción, el servidor detiene inmediatamente los cursores especificados. No espera la confirmación de la transacción.
Ejemplo
Considere la siguiente find operación en la colección test.restaurants:
use test db.runCommand( { find: "restaurants", filter: { stars: 5 }, projection: { name: 1, rating: 1, address: 1 }, sort: { name: 1 }, batchSize: 5 } )
que devuelve lo siguiente:
{ "waitedMS" : Long(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" : Long("18314637080"), "ns" : "test.restaurants" }, "ok" : 1 }
Para eliminar este cursor, usa el comando killCursors.
use test db.runCommand( { killCursors: "restaurants", cursors: [ Long("18314637080") ] } )
killCursors devuelve los siguientes detalles de la operación:
{ "cursorsKilled" : [ Long("18314637080") ], "cursorsNotFound" : [ ], "cursorsAlive" : [ ], "cursorsUnknown" : [ ], "ok" : 1 }