Definición
$currentOpDevuelve un flujo de documentos que contiene información sobre operaciones activas y/o inactivas, así como sesiones inactivas que están reteniendo bloqueos como parte de una transacción. La etapa devuelve un documento por cada operación o sesión. Para ejecutar
$currentOp, utilice eldb.aggregate()asistente en la base de datosadmin.La etapa
$currentOpde agregación es preferible al comandocurrentOpy sumongoshmétodo auxiliardb.currentOp(). Dado que el comandocurrentOpy el método auxiliardb.currentOp()devuelven los resultados en un solo documento, el tamaño total del conjunto de resultadoscurrentOpestá sujeto al límite máximo de tamaño BSON de 16MB para documentos. La etapa$currentOpdevuelve un cursor sobre un flujo de documentos, cada uno de los cuales informa una sola operación. Cada documento de operación está sujeto al límite de BSON de 16MB, pero a diferencia del comandocurrentOp, no hay límite en el tamaño total del conjunto de resultados.$currentOpTambién le permite realizar transformaciones arbitrarias de los resultados a medida que los documentos pasan por el pipeline.
Sintaxis
{ $currentOp: { allUsers: <boolean>, idleConnections: <boolean>, idleCursors: <boolean>, idleSessions: <boolean>, localOps: <boolean> } }
$currentOp toma un documento de opciones como su operando:
Opción | Descripción |
|---|---|
Booleano.
Para conjuntos autónomos y sets de réplicas que aplican el control de acceso, se requiere el privilegio Para los clústeres particionados que aplican el control de acceso, se requiere el privilegio Se establece por defecto en | |
Booleano. Si se establece en Se establece por defecto en | |
Booleano. Si se establece La información sobre los cursores inactivos tiene la La información sobre los cursores actualmente activos en una Se establece por defecto en | |
Booleano.
Se establece por defecto en | |
Booleano. Si se establece en El parámetro Se establece por defecto en | |
booleano. Si se establece en Por ejemplo, en un clúster fragmentado con tres fragmentos donde cada fragmento es un conjunto de réplicas con tres nodos:
Se establece por defecto en Nuevo en la versión 7.1. |
Omitir cualquiera de los parámetros anteriores causará que $currentOp use el valor por defecto de ese parámetro. Especifica un documento vacío, como se muestra a continuación, para usar los valores por defecto de todos los parámetros.
{ $currentOp: { } }
Restricciones
pipeline
$currentOpdebe ser la primera etapa en la pipeline.Las canalizaciones que comienzan con
$currentOpsolo se pueden ejecutar en la base de datosadmin.
Control de acceso
Para los conjuntos independientes y de réplicas que aplican el control de acceso,
inprogse requiere el privilegio para ejecutar$currentOpsi allUsers: verdadero.Para los clústeres fragmentados que aplican el control de acceso, se requiere el privilegio
inprogpara ejecutar$currentOp.
Transacciones
$currentOpno se permite en las transacciones.
Redacción
Al utilizar el cifrado consultable, $currentOp la salida redacta cierta información:
La salida omite todos los campos después de
"command".La salida redacta
"command"para incluir únicamente el primer elemento,$comment, y$db.
Ejemplos
Sesiones inactivas
Este ejemplo crea las siguientes etapas para devolver información sobre sesiones inactivas que mantienen bloqueos como parte de una transacción:
La primera etapa devuelve documentos para todas las operaciones activas, así como sesiones inactivas que mantienen bloqueos como parte de una transacción.
La segunda etapa filtra aquellos documentos relacionados con sesiones inactivas que están reteniendo bloqueos como parte de una transacción.
db.getSiblingDB("admin").aggregate( [ { $currentOp : { allUsers: true, idleSessions: true } }, { $match : { active: false, transaction : { $exists: true } } } ] )
Puedes usar $currentOp.type para especificar un filtro equivalente:
db.getSiblingDB("admin").aggregate( [ { $currentOp : { allUsers: true, idleSessions: true } }, { $match : { type: "idleSession" } } ] )
Tip
Para las transacciones en un clúster fragmentado, incluye localOps:true en los ejemplos anteriores para obtener una vista compuesta de las transacciones.
Ambas operaciones devuelven documentos de la siguiente forma:
Cuando se ejecuta en un mongod que forma parte de un set de réplicas:
{ "type" : "idleSession", "host" : "example.mongodb.com:27017", "desc" : "inactive transaction", "client" : "198.51.100.1:50428", "connectionId" : Long(32), "appName" : "", "clientMetadata" : { "driver" : { "name" : "PyMongo", "version" : "3.9.0" }, "os" : { "type" : "Darwin", "name" : "Darwin", "architecture" : "x86_64", "version" : "10.14.5" }, "platform" : "CPython 3.7.1.final.0" }, "lsid" : { "id" : UUID("ff21e1a9-a130-4fe0-942f-9e6b6c67ea3c"), "uid" : BinData(0,"3pxqkATNUYKV/soT7qqKE0zC0BFb0pBz1pk4xXcSHsI=") }, "transaction" : { "parameters" : { "txnNumber" : Long(4), "autocommit" : false, "readConcern" : { "level" : "snapshot", "afterClusterTime" : Timestamp(1563892246, 1) } }, "readTimestamp" : Timestamp(0, 0), "startWallClockTime" : "2019-07-23T10:30:49.461-04:00", "timeOpenMicros" : Long(1913590), "timeActiveMicros" : Long(55), "timeInactiveMicros" : Long(1913535), "expiryTime" : "2019-07-23T10:31:49.461-04:00" }, "waitingForLock" : false, "active" : false, "locks" : { "ReplicationStateTransition" : "w", "Global" : "w", "Database" : "w", "Collection" : "w" }, "lockStats" : { "ReplicationStateTransition" : { "acquireCount" : { "w" : Long(5) } }, "Global" : { "acquireCount" : { "r" : Long(3), "w" : Long(1) } }, "Database" : { "acquireCount" : { "r" : Long(2), "w" : Long(1) } }, "Collection" : { "acquireCount" : { "w" : Long(1) } }, "Mutex" : { "acquireCount" : { "r" : Long(3) } }, "oplog" : { "acquireCount" : { "r" : Long(2) } } }, "waitingForFlowControl" : false, "flowControlStats" : {}, }
Ejecutar $currentOp con locaOps: verdadero proporciona una vista compuesta de las transacciones en curso que se ejecutan en ese mongos, en lugar de información sobre particiones individuales.
db.getSiblingDB("admin").aggregate( [ { $currentOp : { allUsers: true, idleSessions: true, localOps: true } }, { $match : { type: "idleSession" } } ] ); // or db.getSiblingDB("admin").aggregate( [ { $currentOp : { allUsers: true, idleSessions: true, localOps: true } }, { $match : { active: false, transaction : { $exists: true } } } ] )
{ "type" : "idleSession", "host" : "example.mongodb.com:27017", "desc" : "inactive transaction", "client" : "198.51.100.1:49618", "connectionId" : Long(48), "appName" : "", "clientMetadata" : { "driver" : { "name" : "PyMongo", "version" : "3.9.0" }, "os" : { "type" : "Darwin", "name" : "Darwin", "architecture" : "x86_64", "version" : "10.14.6" }, "platform" : "CPython 3.7.1.final.0", "mongos" : { "host" : "example.mongodb.com:27017", "client" : "198.51.100.1:53268", "version" : "4.2.1" } }, "lsid" : { "id" : UUID("2c9ce111-133e-45b7-a00f-a7871005cae1"), "uid" : BinData(0,"3pxqkATNUYKV/soT7qqKE0zC0BFb0pBz1pk4xXcSHsI=") }, "active" : false, "transaction" : { "parameters" : { "txnNumber" : Long(2), "autocommit" : false, "readConcern" : { "level" : "snapshot", "afterClusterTime" : Timestamp(1571869019, 2) } }, "globalReadTimestamp" : Timestamp(1571869019, 2), "startWallClockTime" : "2019-10-23T18:16:59.341-04:00", "timeOpenMicros" : Long(169244639), "timeActiveMicros" : Long(535), "timeInactiveMicros" : Long(169244104), "numParticipants" : 2, "participants" : [ { "name" : "shardB", "coordinator" : true, "readOnly" : false }, { "name" : "shardA", "coordinator" : false, "readOnly" : false } ], "numReadOnlyParticipants" : 0, "numNonReadOnlyParticipants" : 2 } }
Cuando se ejecuta sin localOps:true en el mongos, la información de la transacción es por partición.
Cuando se ejecuta en un mongos sin localOps:true, la información sobre la transacción es por partición.
{ "shard" : "shardB", "type" : "idleSession", "host" : "shardB.mongodb.com:27018", "desc" : "inactive transaction", "client_s" : "198.51.100.1:53961", "connectionId" : Long(63), "appName" : "", "clientMetadata" : { "driver" : { "name" : "PyMongo", "version" : "3.9.0" }, "os" : { "type" : "Darwin", "name" : "Darwin", "architecture" : "x86_64", "version" : "10.14.6" }, "platform" : "CPython 3.7.1.final.0", "mongos" : { "host" : "example.mongodb.com:27017", "client" : "198.51.100.1:53976", "version" : "4.2.0" } }, "lsid" : { "id" : UUID("720d403c-8daf-40bb-b61e-329e20b0493b"), "uid" : BinData(0,"3pxqkATNUYKV/soT7qqKE0zC0BFb0pBz1pk4xXcSHsI=") }, "transaction" : { "parameters" : { "txnNumber" : Long(1), "autocommit" : false, "readConcern" : { "level" : "snapshot" } }, "readTimestamp" : Timestamp(0, 0), "startWallClockTime" : "2019-10-21T18:31:12.192-04:00", "timeOpenMicros" : Long(24137008), "timeActiveMicros" : Long(52), "timeInactiveMicros" : Long(24136956), "expiryTime" : "2019-10-21T18:32:12.192-04:00" }, "waitingForLock" : false, "active" : false, "locks" : { "ReplicationStateTransition" : "w", "Global" : "w", "Database" : "w", "Collection" : "w" }, "lockStats" : { "ReplicationStateTransition" : { "acquireCount" : { "w" : Long(3) } }, "Global" : { "acquireCount" : { "r" : Long(1), "w" : Long(1) } }, "Database" : { "acquireCount" : { "r" : Long(1), "w" : Long(1) } }, "Collection" : { "acquireCount" : { "r" : Long(1), "w" : Long(1) } }, "Mutex" : { "acquireCount" : { "r" : Long(6) } } } } { "shard" : "shardA", "type" : "idleSession", ... }
Queries muestreadas
Este ejemplo devuelve información sobre el progreso de muestreo de la query.
La primera etapa devuelve documentos para todas las operaciones activas.
La segunda etapa filtra los documentos relacionados con el analizador de consultas.
db.getSiblingDB("admin").aggregate( [ { $currentOp: { allUsers: true, localOps: true } }, { $match: { desc: "query analyzer" } } ] )
Esta canalización devuelve un resultado similar al siguiente:
Cuando se ejecuta en un mongod que es parte de un conjunto de réplicas:
{ "desc" : "query analyzer", "ns" : "testDb.testColl", "collUuid" : UUID("ed9dfb1d-5b7c-4c6b-82e9-b0f537335795"), "samplesPerSecond" : 5, "startTime" : ISODate("2023-08-08T16:23:22.846Z"), "sampledReadsCount" : Long(2), "sampledReadsBytes" : Long(346), "sampledWritesCount" : Long(3), "sampledWritesBytes" : Long(904) }
Cuando se ejecuta en un mongos que forma parte de un clúster fragmentado:
{ "desc" : "query analyzer", "ns" : "testDb.testColl", "collUuid" : UUID("5130b4df-5966-434f-85f0-f8956b5ca74e"), "samplesPerSecond" : 5, "startTime" : ISODate("2023-08-08T16:15:07.427Z"), "sampledReadsCount" : Long(2), "sampledWritesCount" : Long(3) }
Cuando se ejecuta en un mongod --shardsvr que forma parte de un clúster fragmentado:
{ "desc" : "query analyzer", "ns" : "testDb.testColl", "collUuid" : UUID("5130b4df-5966-434f-85f0-f8956b5ca74e"), "startTime" : ISODate("2023-08-08T16:15:07.427Z"), "sampledReadsCount" : Long(2), "sampledReadsBytes" : Long(346), "sampledWritesCount" : Long(3), "sampledWritesBytes" : Long(904) }
Para utilizar el controlador de MongoDB Node.js para agregar una etapa de $currentOp a una canalización de agregación, utilice el Operador $currentOp en un objeto de canalización.
Sesiones inactivas
Este ejemplo crea las siguientes etapas del pipeline que devuelven información sobre sesiones inactivas que están manteniendo bloqueos como parte de una transacción.
La primera etapa devuelve documentos para todas las operaciones activas y sesiones inactivas que mantienen bloqueos como parte de una transacción.
La segunda etapa filtra aquellos documentos relacionados con sesiones inactivas que están reteniendo bloqueos como parte de una transacción.
Luego, el ejemplo ejecuta la siguiente canalización de agregación:
const db = client.db("admin"); const pipeline = [ { $currentOp: { allUsers: true, idleSessions: true } }, { $match: { active: false, transaction: { $exists: true } } } ]; const cursor = db.aggregate(pipeline); return cursor;
Puedes usar $currentOp.type para especificar un filtro equivalente en la $match etapa:
const db = client.db("admin"); const pipeline = [ { $currentOp: { allUsers: true, idleSessions: true } }, { $match: { type: "idleSession" } } ]; const cursor = db.aggregate(pipeline); return cursor;
Queries muestreadas
Este ejemplo crea las siguientes etapas para devolver información sobre el muestreo de consultas.
La primera etapa devuelve documentos para todas las operaciones activas.
La segunda etapa filtra los documentos relacionados con el analizador de consultas.
const db = client.db("admin"); const pipeline = [ { $currentOp: { allUsers: true, localOps: true } }, { $match: { desc: "query analyzer" } } ]; const cursor = db.aggregate(pipeline); return cursor;
Campos de salida
Cada documento de salida puede contener un subconjunto de los siguientes campos, según sea relevante para la operación:
$currentOp.typeEl tipo de operación. Los valores son:
opidleSessionidleCursor
Si
$currentOp.typeopes, proporciona detalles sobre la operación$currentOp.opespecífica.
$currentOp.shardEl nombre de la partición en el que se está ejecutando la operación.
Solo presente para clústeres fragmentados.
$currentOp.clientLa dirección IP (o el nombre de host) y el puerto efímero de la conexión del cliente en donde se origina la operación.
Para transacciones multi-documento,
$currentOp.clientalmacena información sobre el cliente más reciente que ejecutó una operación dentro de la transacción.Solo para autónomos y sets de réplicas
$currentOp.client_sLa dirección IP (o nombre del host) y el puerto efímero del
mongosdonde se origina la operación.Solo para clústeres fragmentados
$currentOp.clientMetadataInformación adicional del cliente.
Para transacciones multi-documento,
$currentOp.clientalmacena información sobre el cliente más reciente que ejecutó una operación dentro de la transacción.
$currentOp.appNameEl identificador de la aplicación cliente que ejecutó la operación. Utiliza la opción de cadena de conexión
appNamepara establecer un valor personalizado para el campoappName.
$currentOp.activeUn valor booleano que especifica si la operación ha comenzado. El valor es
truesi la operación ha comenzado ofalsesi la operación está inactiva, como una conexión inactiva, una sesión inactiva o un hilo interno que actualmente está inactivo. Una operación puede estar activa incluso si la operación ha cedido a otra operación.
$currentOp.twoPhaseCommitCoordinatorInformación sobre cualquiera de los siguientes:
Las métricas de coordinación de confirmación para una transacción cuyas operaciones de guardado abarcan múltiples particiones.
La coordinación del commit está gestionada por una partición, y
$currentOp(se ejecuta tanto en unmongoscomo en un nodo de la partición) devuelve la información de coordinación de una partición solo para las transacciones que la partición está coordinando actualmente.El siguiente ejemplo filtra únicamente las métricas de coordinación de confirmaciones:
db.getSiblingDB("admin").aggregate( [ { $currentOp: { allUsers: true, idleSessions: true } }, { $match: { desc: "transaction coordinator" } } ] )
Una operación de coordinación de confirmación específica (es decir,
typeesopdescy"TransactionCoordinator"es) generada por el coordinador de transacciones.Nota
Si se ejecuta con idleSessions: false,
$currentOpno devuelve la información de$currentOp.twoPhaseCommitCoordinatoreninactivestateSi el control de acceso está habilitado y allUsers: false,
$currentOpno devuelve la información$currentOp.twoPhaseCommitCoordinator
$currentOp.twoPhaseCommitCoordinator.lsidEl identificador de sesión para la transacción multipartición.
La combinación de
lsidy identifica latxnNumbertransacción.Disponible tanto para las métricas de coordinación de confirmaciones como para operaciones de coordinación específicas.
$currentOp.twoPhaseCommitCoordinator.txnNumberEl número de transacción para la transacción de múltiples particiones.
La combinación de
txnNumbery identifica lalsidtransacción.Disponible tanto para las métricas de coordinación de confirmaciones como para operaciones de coordinación específicas.
$currentOp.twoPhaseCommitCoordinator.actionLa operación específica de coordinación de confirmación originada por el coordinador de transacciones:
"sendingPrepare""sendingCommit""sendingAbort""writingParticipantList""writingDecision""deletingCoordinatorDoc"
Sólo disponible para operaciones de coordinación específicas.
$currentOp.twoPhaseCommitCoordinator.startTimeLa fecha y hora de inicio del
action.Sólo disponible para operaciones de coordinación específicas.
$currentOp.twoPhaseCommitCoordinator.numParticipantsNúmero de fragmentos que participan en esta confirmación.
Solo está disponible para las métricas de coordinación de commits.
$currentOp.twoPhaseCommitCoordinator.stateEl paso/estado actual del proceso de coordinación de confirmación.
Paso/etapaDescripcióninactiveNo forma parte activamente de una commit.
writingParticipantListEscribir un registro local de la lista de fragmentos que forman parte de esta transacción de múltiples fragmentos.
waitingForVotesEsperando que los participantes respondan con su voto para confirmar o abortar.
writingDecisionRedactar un registro local de la decisión del coordinador de comprometerse o abortar en función de los votos.
waitingForDecisionAckEsperando que los participantes reconozcan la decisión del coordinador de confirmar o cancelar.
deletingCoordinatorDocEliminar el registro local de la decisión de confirmación.
Solo está disponible para las métricas de coordinación de commits.
Ver también
$currentOp.twoPhaseCommitCoordinator.stepDurations.
$currentOp.twoPhaseCommitCoordinator.commitStartTimeLa fecha y hora en que comenzó el commit.
Solo está disponible para las métricas de coordinación de commits.
$currentOp.twoPhaseCommitCoordinator.hasRecoveredFromFailoverUn booleano que indica si la coordinación de confirmaciones se reinició debido a un cambio de respaldo en la partición que coordina la confirmación.
Si es verdadero, entonces
hasRecoveredFromFailover$currentOp.twoPhaseCommitCoordinator.stepDurationslos tiempos especificados en pueden no ser precisos para todos los pasos.Solo está disponible para las métricas de coordinación de commits.
$currentOp.twoPhaseCommitCoordinator.stepDurationsUn documento que contiene la duración, en microsegundos, de la
steps/statecompletada o en curso del proceso en activo, así como la duración total acumulada; por ejemplo:"stepDurations" : { "writingParticipantListMicros" : Long(17801), "totalCommitDurationMicros" : Long(42488463), "waitingForVotesMicros" : Long(30378502), "writingDecisionMicros" : Long(15015), "waitingForDecisionAcksMicros" : Long(12077145), "deletingCoordinatorDocMicros" : Long(6009) }, Si es verdadero, entonces
$currentOp.twoPhaseCommitCoordinator.hasRecoveredFromFailoverstepDurationslos tiempos especificados en pueden no ser precisos para todos los pasos.Para un coordinador en un estado
inactive, el documento está vacío:"stepDurations" : { } Solo está disponible para las métricas de coordinación de commits.
Se puede consultar
$currentOp.twoPhaseCommitCoordinator.state.
$currentOp.twoPhaseCommitCoordinator.decisionUn documento que contiene la decisión de confirmar o cancelar, por ejemplo:
Para una decisión de confirmación:
"decision" : { "decision" : "commit", "commitTimestamp" : Timestamp(1572034669, 3) } Para una decisión de aborto:
"decision" : { "decision" : "abort", "abortStatus" : { "code" : 282, "codeName" : "TransactionCoordinatorReachedAbortDecision", "errmsg" : "Transaction exceeded deadline" } } Solo está disponible para las métricas de coordinación de commits.
$currentOp.twoPhaseCommitCoordinator.deadlineLa fecha y hora en que el compromiso debe finalizar.
Solo está disponible para las métricas de coordinación de commits.
$currentOp.effectiveUsersUn arreglo que contiene un documento para cada usuario asociado con la operación. Cada documento de usuario contiene el
usernombre y la autenticacióndb.
$currentOp.runByUn arreglo que contiene un documento para cada usuario que esté falseando identidad como el
effectiveUser(s)para la operación. El documento runBy contiene el nombre deusery la autenticacióndb. En general, el usuario que suplanta es el usuario__system; por ejemplo."runBy" : [ { "user" : "__system", "db" : "local" } ]
$currentOp.opidEl identificador de la operación. Puede pasar este valor a
db.killOp()en para finalizar lamongoshoperación.Advertencia
Finaliza las operaciones en marcha con extrema precaución. Sólo use
db.killOp()para finalizar las operaciones iniciadas por los clientes y no terminar operaciones internas de base de datos.
$currentOp.versionContextDescribe la versión de compatibilidad de características (FCV) de la operación, que el servidor utiliza para determinar las características disponibles.
Esta información está destinada a la solución de problemas encontrados durante la actualización o degradación de un servidor.
Nuevo en la versión 8.2.
$currentOp.secs_runningLa duración de la operación en segundos. MongoDB calcula este valor restando la hora actual a la hora de inicio de la operación.
Sólo está presente si la operación se está ejecutando, es decir,
activesitruees.
$currentOp.microsecs_runningLa duración de la operación en microsegundos. MongoDB calcula este valor restando la hora actual de la hora de inicio de la operación.
Solo se presenta si la operación está en marcha; es decir, si
activeestátrue.
$currentOp.lsidEl identificador de sesión.
Solo se presenta si la operación está asociada a una sesión.
$currentOp.transactionUn documento que contiene información sobre una transacción multi-documento.
Solo se presenta si la operación es parte de una transacción:
En un set de réplicas.
En un clúster fragmentado si
$currentOpse ejecuta sin localOps:true. La información de la transacción es por partición.En un clúster fragmentado, si
$currentOpse ejecuta con localOps:true, la información de la transacción es una vista compuesta, no por fragmento.
$currentOp.transaction.parametersUn documento que contiene información sobre transacción multi-documento.
Solo está presente si la operación forma parte de una transacción multidocumento.
$currentOp.transaction.parameters.txnNumberEl número de transacción.
Solo está presente si la operación forma parte de una transacción multidocumento.
$currentOp.transaction.parameters.autocommitUna bandera booleana que indica si autocommit está activado para la transacción.
Solo está presente si la operación forma parte de una transacción multidocumento.
$currentOp.transaction.parameters.readConcernEl nivel de consistencia de lectura para la transacción.
Las transacciones multi-documento admiten el nivel de consistencia de lectura
"snapshot","local"y"majority".Solo está presente si la operación forma parte de una transacción multidocumento.
$currentOp.transaction.globalReadTimestampMarca de tiempo de la instantánea leída por las operaciones en la transacción del clúster fragmentado que utiliza la preocupación de lectura "instantánea". En las transacciones en clústeres fragmentados, la preocupación
"snapshot"de lectura de los datos se sincroniza entre los fragmentos; es decir, otras preocupaciones de lectura no pueden garantizar que los datos provengan de la misma vista de instantánea en todos los fragmentos.Solo está presente cuando se ejecuta con localOps: true para transacciones de clúster particionadas.
$currentOp.transaction.readTimestampLa marca de tiempo del snapshot que leen las operaciones en esta transacción
Solo se presenta si la operación forma parte de una transacción multi-documento. Sin embargo, el campo no se devuelve si:
La transacción se realiza en un clúster fragmentado y utiliza una preocupación de lectura de "instantánea", y
$currentOpse ejecuta con localOps: verdadero.
En su lugar, se devuelve
$currentOp.transaction.globalReadTimestamp.
$currentOp.transaction.startWallClockTimeLa fecha y hora (con zona horaria) de inicio de la transacción.
Solo está presente si la operación forma parte de una transacción multidocumento.
$currentOp.transaction.timeOpenMicrosLa duración, en microsegundos, de la transacción.
El valor
timeActiveMicrosagregado altimeInactiveMicrosdebe ser igual atimeOpenMicros.Solo está presente si la operación forma parte de una transacción multidocumento.
$currentOp.transaction.timeActiveMicrosLa cantidad total de tiempo que la transacción ha estado activa, es decir, cuándo la transacción tuvo operaciones en ejecución.
El valor
timeActiveMicrosagregado altimeInactiveMicrosdebe ser igual atimeOpenMicros.Solo está presente si la operación forma parte de una transacción multidocumento.
$currentOp.transaction.timeInactiveMicrosLa cantidad total de tiempo que la transacción ha estado inactiva; es decir, cuando la transacción no tuvo operaciones en ejecución.
El valor
timeInactiveMicrosagregado altimeActiveMicrosdebe ser igual atimeOpenMicros.Solo está presente si la operación forma parte de una transacción multidocumento.
$currentOp.transaction.numParticipantsNúmero de particiones que participan en esta transacción.
Solo está presente si la operación es parte de una transacción en un clúster y
$currentOpse ejecuta con localOps: true
$currentOp.transaction.participantsUna matriz de documentos que detalla los fragmentos que participan en esta transacción. Cada documento contiene el nombre, un indicador que indica si el fragmento actúa como coordinador de la confirmación y un indicador que indica si solo participa en las operaciones de lectura de la transacción.
{ "name" : "shardA", "coordinator" : false, "readOnly" : false } Solo está presente si la operación es parte de una transacción en un clúster y
$currentOpse ejecuta con localOps: true
$currentOp.transaction.numReadOnlyParticipantsNúmero de particiones solo afectados por operaciones de lectura en esta transacción.
Solo está presente si la operación es parte de una transacción en un clúster y
$currentOpse ejecuta con localOps: true
$currentOp.transaction.numNonReadOnlyParticipantsNúmero de fragmentos afectados por operaciones distintas a las lecturas en esta transacción.
Solo está presente si la operación es parte de una transacción en un clúster y
$currentOpse ejecuta con localOps: true
$currentOp.transaction.expiryTimeLa fecha y hora (con zona horaria) en que la transacción expirará y se cancelará.
El es
$currentOp.transaction.expiryTimeigual al$currentOp.transaction.startWallClockTime+transactionLifetimeLimitSecondsel.Para obtener más información, consulta Límite de tiempo de ejecución para transacciones.
Solo está presente si la operación forma parte de una transacción multidocumento.
$currentOp.opUna string que identifica el tipo de operación específico. Solo se presenta si
$currentOp.typeesop.Los valores posibles son:
"none""update""insert""query""command""getmore""remove""killcursors"
"command"Las operaciones incluyen la mayoría de los comandos,createIndexesaggregatecomo,findAndModifyy."query"Las operaciones incluyen operaciones y operacionesfindOP_QUERY.
$currentOp.nsEl namespace al que se dirige la operación. Un namespace consiste en el nombre de la base de datos y el nombre de la colección concatenados con un punto (
.); es decir,"<database>.<collection>".
$currentOp.commandUn documento que contiene el objeto de comando completo asociado con esta operación.
Por ejemplo, la siguiente salida contiene el objeto de comando para una operación en una colección
findllamadaitemsen una base de datostestllamada:"command" : { "find" : "items", "filter" : { "sku" : 1403978 }, ... "$db" : "test" } El siguiente resultado de ejemplo contiene el objeto de comando para una operación
getMoregenerado por un comando con ID de cursor19234103609en una colección llamadaitemsen una base de datos llamadatest:"command" : { "getMore" : Long("19234103609"), "collection" : "items", "batchSize" : 10, ... "$db" : "test" }, Si el documento de comando supera 1 kilobyte, el documento tiene la siguiente forma:
"command" : { "$truncated": <string>, "comment": <string> } El campo
$truncatedcontiene un resumen en forma de string del documento, excluyendo el campocommentdel documento si está presente. Si el resumen sigue superando 1 kilobyte, se trunca aún más, indicado por una elipsis (...) al final de la string.El campo
commentestá presente si se pasó un comentario a la operación. Se puede adjuntar un comentario a cualquier comando de base de datos.
$currentOp.cursorUn documento que contiene la información del cursor para las operaciones
idleCursorygetmore; es decir, dondetypeesidleCursoroopesgetmore.Si se informa sobre una operación de
getmoreantes de quegetmorehaya accedido a su información de cursor, el campocursorno estará disponible.$currentOp.cursor.lastAccessDateLa fecha y hora en que se utilizó el cursor por última vez.
Si el cursor está en uso activo (es decir,
opesgetmorey eltypeno esidleCursor), entonceslastAccessDatese informa bien el tiempo en que terminó elgetmoreanterior o el tiempo en que se creó el cursor si este es el primergetmore.
$currentOp.cursor.noCursorTimeoutEl indicador que indica que el cursor no caduca cuando está inactivo; es decir, si el cursor tiene la opción
noTimeoutactivada.Si es cierto, el cursor no agota el tiempo cuando está inactivo.
En caso de ser falso, el cursor se desactiva cuando está inactivo.
$currentOp.cursor.tailableLa bandera que indica si el cursor es un cursor con seguimiento para una colección con tamaño fijo. Los cursores con seguimiento permanecen abiertos después de que el cliente agota los resultados en el cursor inicial.
$currentOp.cursor.awaitDataEl indicador que señala si el cursor con seguimiento debe bloquear temporalmente un comando
getMoreen el cursor mientras espera nuevos datos en lugar de devolver ningún dato.Para los cursores sin seguimiento, el valor siempre es false.
$currentOp.cursor.originatingCommandEl campo
originatingCommandcontiene el objeto de comando completo (por ejemplo,findoaggregate) que creó originalmente el cursor.
$currentOp.cursor.planSummaryUna string que especifica si el cursor utiliza un escaneo de colección (
COLLSCAN) o un escaneo de índice (IXSCAN { ... }).El
IXSCANtambién incluye el documento de especificación del índice utilizado.No disponible cuando se ejecuta con
localOps: trueen o cuando semongosinformaidleCursorsen.
$currentOp.cursor.queryFrameworkNuevo en la versión 6.2.
Un string que especifica la estructura del query utilizado para procesar una operación.
$currentOp.planSummaryUna string que especifica si el cursor utiliza un escaneo de colección (
COLLSCAN) o un escaneo de índice (IXSCAN { ... }).No disponible al ejecutarse con
localOps: trueenmongos.
$currentOp.prepareReadConflictsEl número de veces que la operación actual tuvo que esperar a que una transacción preparada con un guardado se confirmara o abortara.
Mientras espera, la operación sigue manteniendo cualquier bloqueo necesario y recursos del motor de almacenamiento.
$currentOp.writeConflictsEl número de veces que la operación actual entró en conflicto con otra operación de guardar en el mismo documento.
$currentOp.numYieldsnumYieldses un contador que informa el número de veces que la operación ha suspendido para permitir que otras operaciones se completen.Por lo general, las operaciones ceden cuando necesitan acceder a datos que MongoDB aún no ha leído completamente en la memoria. Esto permite que otras operaciones que tienen datos en memoria se completen rápidamente mientras MongoDB lee los datos de la operación de ceder recursos.
$currentOp.queryShapeHashNuevo en la versión 8.0.
queryShapeHashes una string hexadecimal con el hash de una forma del query. Para más detalles, consulta Forma del query.
$currentOp.dataThroughputLastSecondCantidad de datos (en MiB) procesados por la operación en el último
validatevalidatesegundo. Solo disponible para una operación que esté escaneando documentos. Por ejemplo:"msg" : "Validate: scanning documents Validate: scanning documents: 7258/24000 30%", "progress" : { "done" : 7258, "total" : 24000 }, "numYields" : 0, "dataThroughputLastSecond" : 15.576952934265137, "dataThroughputAverage" : 15.375944137573242,
$currentOp.dataThroughputAverageLa cantidad promedio de datos (en MiB) procesados por la operación. Solo
validatevalidatedisponible para una operación que esté escaneando documentos. Por ejemplo:"msg" : "Validate: scanning documents Validate: scanning documents: 7258/24000 30%", "progress" : { "done" : 7258, "total" : 24000 }, "numYields" : 0, "dataThroughputLastSecond" : 15.576952934265137, "dataThroughputAverage" : 15.375944137573242,
$currentOp.locksEl documento
locksinforma el tipo y el modo de bloqueos que la operación mantiene actualmente. Los posibles tipos de bloqueo son los siguientes:Tipo de bloqueoDescripciónParallelBatchWriterModeRepresenta un bloqueo para el modo de escritura por lotes paralelo.
En versiones anteriores, la información de PBWM se informaba como parte de la información de bloqueo de
Global.ReplicationStateTransitionRepresenta el bloqueo tomado para las transiciones de estado del nodo del set de réplicas.
GlobalRepresenta el bloqueo global.
DatabaseRepresenta el bloqueo de la base de datos.
CollectionRepresenta un bloqueo de colección.
MutexRepresenta una exclusión mutua.
MetadataRepresenta un bloqueo de metadatos.
DDLDatabaseRepresenta un bloqueo de base de datos DDL.
Nuevo en la versión 7.1.
DDLCollectionRepresenta un bloqueo de colección DDL.
Nuevo en la versión 7.1.
oplogRepresenta un bloqueo en el oplog.
Los modos posibles son los siguientes:
Modo de bloqueoDescripciónRRepresenta un bloqueo compartido (S).
WRepresenta un bloqueo exclusivo (X).
rRepresenta un bloqueo de intención compartida (IS).
wRepresenta un bloqueo de intención exclusiva (IX).
$currentOp.lockStatsPara cada tipo y modo de bloqueo (ver
lockspara descripciones de tipos y modos de bloqueo), devuelve la siguiente información:$currentOp.lockStats.acquireCountCantidad de veces que la operación adquirió el bloqueo en el modo especificado.
$currentOp.lockStats.acquireWaitCountNúmero de veces que la operación tuvo que esperar las
acquireCountadquisiciones de bloqueo porque los bloqueos se mantuvieron en un modo conflictivo. es menor oacquireWaitCountigualacquireCounta.
$currentOp.lockStats.timeAcquiringMicrosTiempo acumulado en microsegundos que la operación tuvo que esperar para adquirir los bloqueos.
timeAcquiringMicrosdividido poracquireWaitCountproporciona un tiempo de espera promedio aproximado para la moda de bloqueo particular.
$currentOp.waitingForLockDevuelve un valor booleano.
waitingForLockestruesi la operación está esperando un bloqueo yfalsesi la operación tiene el bloqueo requerido.
$currentOp.msgEl
msgproporciona un mensaje que describe el estado y el progreso de la operación. En el caso de las operaciones de indexación o mapReduce, el campo informa el porcentaje de finalización.
$currentOp.progressInformes sobre el progreso de las operaciones de mapReduce o indexación. Los campos
progresscorresponden al porcentaje de finalización del campomsg. Elprogressespecifica la siguiente información:
$currentOp.killPendingDevuelve
truesi la operación está marcada para finalizar. Al alcanzar su siguiente punto de finalización seguro, finaliza.
$currentOp.waitingForFlowControlUn valor booleano que indica si la operación tuvo que esperar debido al control de flujo.
$currentOp.flowControlStatsLas estadísticas de control de flujo para esta operación.
$currentOp.totalOperationTimeElapsedTiempo total transcurrido, en segundos, para la operación de refragmentación actual. El tiempo se establece en 0 cuando se inicia una nueva operación de refragmentación.
Solo está presente si se está realizando una operación de re-asignación de particiones.
Nuevo en la versión 5.0.
$currentOp.remainingOperationTimeEstimatedEl tiempo estimado restante, en segundos, para la operación de redistribución de particiones en curso. El tiempo se establece en -1 cuando se inicia una nueva operación de redistribución de particiones.
Solo está presente cuando se está llevando a cabo una operación de reasignación de particiones. Este campo puede no estar presente si no se puede calcular una estimación.
Nuevo en la versión 5.0.
$currentOp.approxDocumentsToCopyEl número aproximado de documentos que se copiarán de los fragmentos donantes a los fragmentos receptores durante la reorganización. Este número es una estimación que se establece al inicio de la reorganización y no cambia una vez establecido. El número se establece en 0 al iniciar una nueva reorganización. Es posible que
$currentOp.documentsCopiedy$currentOp.bytesCopiedsuperen$currentOp.approxDocumentsToCopya$currentOp.approxBytesToCopyy, respectivamente, si la distribución de datos posterior a la reorganización no es perfectamente uniforme.Solo está presente en una partición receptora cuando se está realizando una operación de redistribución de particiones.
Nuevo en la versión 5.0.
$currentOp.documentsCopiedLa cantidad de documentos copiados desde particiones donantes a particiones receptoras durante la operación de refragmentación. El número se establece en 0 cuando se inicia una nueva operación de cambio de partición.
Solo está presente en una partición receptora cuando se está realizando una operación de redistribución de particiones.
Nuevo en la versión 5.0.
$currentOp.approxBytesToCopyEl número aproximado de bytes que se copiarán de las particiones donantes a las particiones receptoras durante la operación de reshardeo. Esta cifra es una estimación que se establece al inicio de la operación de reconfiguración y que no cambia después de haber sido definida. El número se establece en 0 cuando inicia una nueva operación de redistribución de shards. Es posible que
$currentOp.documentsCopiedy$currentOp.bytesCopiedterminen superando$currentOp.approxDocumentsToCopyy$currentOp.approxBytesToCopy, respectivamente, si la distribución de datos posterior a la redistribución no es perfectamente uniforme.Solo está presente en una partición receptora cuando se está realizando una operación de redistribución de particiones.
Nuevo en la versión 5.0.
$currentOp.bytesCopiedEl número de bytes copiados de particiones donantes a particiones receptoras durante la operación de refragmentación. El número se establece en 0 cuando se inicia una nueva operación de reestructuración.
Solo está presente en una partición receptora cuando se está realizando una operación de redistribución de particiones.
Nuevo en la versión 5.0.
$currentOp.totalCopyTimeElapsedTiempo total transcurrido, en segundos, para las tareas de copia de datos en curso desde los fragmentos donantes a los fragmentos receptores durante la operación de reorganización actual. El tiempo se establece en 0 cuando se inicia una nueva operación de reorganización.
Solo está presente en una partición receptora cuando se está realizando una operación de redistribución de particiones.
Nuevo en la versión 5.0.
$currentOp.oplogEntriesFetchedNúmero de entradas extraídas del registro de operaciones para la operación de refragmentación actual. El número se establece en 0 cuando se inicia una nueva operación de refragmentación.
Solo está presente en una partición receptora cuando se está realizando una operación de redistribución de particiones.
Nuevo en la versión 5.0.
$currentOp.oplogEntriesAppliedEl número de entradas aplicadas al Oplog para la operación actual de re-sharding. El número se establece en 0 cuando comienza una nueva operación de cambiación de particiones.
Solo está presente en una partición receptora cuando se está realizando una operación de redistribución de particiones.
Nuevo en la versión 5.0.
$currentOp.totalApplyTimeElapsedEl tiempo total transcurrido, en segundos, para el paso de aplicar de la operación de redistribución actual. En el paso de aplicación, los fragmentos receptores aplican entradas de oplog para modificar sus datos basándose en nuevas escrituras entrantes de fragmentos donantes. El tiempo se ajusta a 0 cuando se inicia una nueva operación de redistribución.
Solo está presente en una partición receptora cuando se está realizando una operación de redistribución de particiones.
Nuevo en la versión 5.0.
$currentOp.countWritesDuringCriticalSectionEl número de guardados realizados en la sección crítica para la operación de re-sharding actual. La sección crítica impide la entrada de nuevas escrituras en la colección que actualmente está siendo redistribuida. El número se establece en 0 cuando comienza una nueva operación de redistribución.
Solo está presente en una partición donante cuando se está llevando a cabo una operación de reconstrucción de particiones.
Nuevo en la versión 5.0.
$currentOp.totalCriticalSectionTimeElapsedEl tiempo total transcurrido, en segundos, para la sección crítica de la operación de repartición actual. Esta sección impide nuevas escrituras entrantes en la colección que se está repartiendo. El tiempo se establece en 0 cuando se inicia una nueva operación de repartición.
Solo está presente en una partición donante cuando se está llevando a cabo una operación de reconstrucción de particiones.
Nuevo en la versión 5.0.
$currentOp.donorStateEl estado actual de un fragmento donante para la operación de refragmentación. El estado se establece
unuseden cuando se inicia una nueva operación de refragmentación.Solo está presente en una partición donante cuando se está llevando a cabo una operación de reconstrucción de particiones.
EstadoDescripciónunusedLa operación de re-fragmentación está a punto de comenzar o de recuperarse de una conmutación por error primaria.
preparing-to-donateLa partición donante se está preparando para donar datos a las particiones receptoras.
donating-initial-dataEl fragmento donante está transfiriendo datos a los fragmentos receptores.
donating-oplog-entriesLa partición donante está donando entradas de oplog a las particiones receptoras.
preparing-to-block-writesLa partición donante está a punto de impedir nuevas operaciones de guardado en la colección que se está redistribuyendo.
errorSe ha producido un error durante la operación de redistribución de fragmentos.
blocking-writesLa partición donante está impidiendo nuevas operaciones de guardado entrantes y ha notificado a todas las particiones receptoras que se han impedido nuevos guardados entrantes.
doneLa partición donante ha descartado la antigua colección particionada y la operación de redistribución ha finalizado.
Nuevo en la versión 5.0.
$currentOp.recipientStateEl estado actual de un fragmento destinatario para una operación de re-fragmentación. El estado se establece
unuseden cuando se inicia una nueva operación de re-fragmentación.Solo está presente en una partición receptora cuando se está realizando una operación de redistribución de particiones.
EstadoDescripciónunusedLa operación de re-fragmentación está a punto de comenzar o de recuperarse de una conmutación por error primaria.
awaiting-fetch-timestampEl fragmento receptor está esperando que los fragmentos donantes estén preparados para donar sus datos.
creating-collectionLa partición receptora está creando la nueva colección particionada.
cloningLa partición receptora está recibiendo datos de las particiones donantes.
applyingLa partición receptora está aplicando entradas del oplog para modificar su copia de los datos en función de las nuevas operaciones de guardado entrantes de las particiones donantes.
errorSe produjo un error durante la operación de cambio de partición.
strict-consistencyLa partición receptora tiene todos los cambios de datos almacenados en una colección temporal.
doneLa operación de redistribución está completa.
Nuevo en la versión 5.0.
$currentOp.coordinatorStateEl estado del coordinador de resharding para la operación de resharding actual. El coordinador de resharding es una operación que se ejecuta en el primario del servidor de configuración. El estado se establece en
unusedcuando una nueva operación de resharding comienza.Solo está presente en el servidor de configuración coordinador.
EstadoDescripciónunusedLa operación de re-fragmentación está a punto de comenzar o de recuperarse de una conmutación por error primaria.
initializingEl coordinador de redistribución ha insertado el documento del coordinador en
config.reshardingOperationsy ha agregado elreshardingFieldsa la entradaconfig.collectionspara la colección original.preparing-to-donateEl coordinador de redistribución
- ha creado una entrada
config.collectionspara lo temporal - colección de resegmentación.
- ha creado una entrada
- ha insertado entradas en
config.chunkspara rangos basados en el - nueva clave de partición.
- ha insertado entradas en
- ha insertado entradas en
config.tagspara cualquier zona asociada - con la nueva clave de partición.
- ha insertado entradas en
El coordinador informa a las particiones participantes que comiencen la operación de redistribución. A continuación, el coordinador espera hasta que todas las particiones donantes hayan elegido un
minFetchTimestampy estén listas para donar.cloningEl coordinador de redistribución informa a las particiones donantes que deben donar datos a las particiones receptoras. El coordinador espera a que todas las particiones receptoras terminen de clonar los datos de la partición donante.
applyingEl coordinador de redistribución informa a las particiones receptoras que modifiquen sus copias de datos basándose en nuevos guardados entrantes de particiones donantes. El coordinador espera a que todas las particiones receptoras terminen de aplicar las entradas de oplog.
blocking-writesEl coordinador de redistribución informa a las particiones donantes que eviten que se vuelvan a redistribuir las nuevas operaciones de guardado entrantes a la colección. A continuación, el coordinador espera a que todas las particiones receptoras hayan recibido todos los cambios de datos.
abortingSe produjo un error irrecuperable durante la operación de redistribución o se ejecutó el comando
abortReshardCollection(o el métodosh.abortReshardCollection()).committingEl coordinador de redistribución remueve la entrada
config.collectionspara la colección de redistribución temporal. A continuación, el coordinador agrega elrecipientFieldsa la entrada de la colección de origen.Nuevo en la versión 5.0.
$currentOp.opStatusEl estado actual de una operación de resharding.
Solo presente si se está realizando una operación de reconfiguración. Una vez que la operación se haya completado, se eliminará la operación de la salida
currentOp.EstadoDescripciónactively runningLa operación de redistribución de particiones se está ejecutando activamente.
successLa operación de resharding ha tenido éxito.
failureLa operación de refragmentación ha fallado.
canceledSe canceló la operación de refragmentación.
Nuevo en la versión 5.0.
$currentOp.collUuidEl UUID de la colección muestreada.
Este campo solo aparece en documentos relacionados con el muestreo de query. Para obtener detalles, consulta query muestreadas.
Nuevo en la versión 7.0.
$currentOp.queuesInformación sobre el
ingressactual yexecutioncolas.
$currentOp.queues.isHoldingTicketIndica si la operación tiene actualmente un ticket.
Nuevo en la versión 8.1.
$currentOp.startTimeLa hora en la que comenzó el muestreo de consultas.
Este campo solo aparece en documentos relacionados con el muestreo de query. Para obtener detalles, consulta query muestreadas.
Nuevo en la versión 7.0.
$currentOp.samplesPerSecondEl número máximo de consultas para muestrear por segundo.
Solo se informa cuando se ejecuta
$currentOpenmongos.Este campo solo aparece en documentos relacionados con el muestreo de query. Para obtener detalles, consulta query muestreadas.
Nuevo en la versión 7.0.
$currentOp.sampledReadsCountEl número de read queries muestreadas.
Este campo solo aparece en documentos relacionados con el muestreo de query. Para obtener detalles, consulta query muestreadas.
Nuevo en la versión 7.0.
$currentOp.sampledWritesCountEl número de queries de guardado muestreadas.
Este campo solo aparece en documentos relacionados con el muestreo de query. Para obtener detalles, consulta query muestreadas.
Nuevo en la versión 7.0.
$currentOp.sampledReadsBytesEl tamaño de las consultas de lectura muestreadas, en bytes.
En un set de réplicas, esto se informa en cada
mongod.En un clúster fragmentado, esto solo se informó en
mongodcon--shardsvr.Este campo solo aparece en documentos relacionados con el muestreo de query. Para obtener detalles, consulta query muestreadas.
Nuevo en la versión 7.0.
$currentOp.sampledWritesBytesEl tamaño de las consultas de escritura muestreadas, en bytes.
En un set de réplicas, esto se informa en cada
mongod.En un clúster fragmentado, esto solo se informó en
mongodcon--shardsvr.Este campo solo aparece en documentos relacionados con el muestreo de query. Para obtener detalles, consulta query muestreadas.
Nuevo en la versión 7.0.