Definición
$currentOpReturns a stream of documents containing information on active and/or dormant operations as well as inactive sessions that are holding locks as part of a transaction. The stage returns a document for each operation or session. To run
$currentOp, use thedb.aggregate()helper on theadmindatabase.The
$currentOpaggregation stage is preferred over thecurrentOpcommand and itsmongoshhelper methoddb.currentOp(). Because thecurrentOpcommand anddb.currentOp()helper method return the results in a single document, the total size of thecurrentOpresult set is subject to the maximum 16MB BSON size limit for documents. The$currentOpstage returns a cursor over a stream of documents, each of which reports a single operation. Each operation document is subject to the 16MB BSON limit, but unlike thecurrentOpcommand, there is no limit on the overall size of the result set.$currentOpalso enables you to perform arbitrary transformations of the results as the documents pass through the pipeline.
Sintaxis
{ $currentOp: { allUsers: <boolean>, idleConnections: <boolean>, idleCursors: <boolean>, idleSessions: <boolean>, localOps: <boolean> } }
$currentOp takes an options document as its operand:
Opción | Descripción |
|---|---|
Booleano.
Para los conjuntos independientes y de réplicas que aplican el control de acceso, se requiere el privilegio Para los clústeres fragmentados 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 el 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 Se establece por defecto en | |
Boolean. If set to 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. |
Si se omite cualquiera de los parámetros anteriores, $currentOp utilizará su valor predeterminado. Especifique un documento vacío, como se muestra a continuación, para utilizar los valores predeterminados de todos los parámetros.
{ $currentOp: { } }
Restricciones
Tubería
$currentOpDebe ser la primera etapa del proceso.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,
inprogse requiere el privilegio para$currentOpejecutar.
Transacciones
$currentOpNo está permitido 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 solo el primer elemento,$commenty$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 para las sesiones inactivas que mantienen bloqueos como parte de una transacción.
La segunda etapa filtra los documentos relacionados con sesiones inactivas que mantienen bloqueos como parte de una transacción.
db.getSiblingDB("admin").aggregate( [ { $currentOp : { allUsers: true, idleSessions: true } }, { $match : { active: false, transaction : { $exists: true } } } ] )
Puede utilizar para especificar un filtro $currentOp.type equivalente:
db.getSiblingDB("admin").aggregate( [ { $currentOp : { allUsers: true, idleSessions: true } }, { $match : { type: "idleSession" } } ] )
Tip
Para las transacciones en un clúster fragmentado, incluya localOps:true en los ejemplos anteriores para obtener una vista compuesta de las transacciones.
Ambas operaciones devuelven documentos con el siguiente formato:
Cuando se ejecuta en un mongod que es parte de un conjunto 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 localOps:true proporciona una vista compuesta de las transacciones en curso que se ejecutan en ese, en lugar de información sobre fragmentos mongos 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 mongosen, la información de la transacción es por fragmento.
Cuando se ejecuta en un mongos sin localOps:true, la información de la transacción es por fragmento.
{ "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", ... }
Consultas de muestra
Este ejemplo devuelve información sobre el progreso del 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.
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 es 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 es 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 de canalización que devuelven información sobre sesiones inactivas que mantienen 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 los documentos relacionados con sesiones inactivas que mantienen 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;
Puede utilizar para especificar un $currentOp.type $match filtro equivalente en la etapa:
const db = client.db("admin"); const pipeline = [ { $currentOp: { allUsers: true, idleSessions: true } }, { $match: { type: "idleSession" } } ]; const cursor = db.aggregate(pipeline); return cursor;
Consultas de muestra
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 del fragmento donde se ejecuta la operación.
Sólo presente para clústeres fragmentados.
$currentOp.clientLa dirección IP (o nombre de host) y el puerto efímero de la conexión del cliente donde se origina la operación.
Para transacciones de múltiples documentos, almacena información sobre el cliente más reciente que ejecutó una operación dentro de la
$currentOp.clienttransacción.Solo para conjuntos independientes y de réplicas
$currentOp.client_sLa dirección IP (o nombre de host) y el puerto efímero del donde se origina la
mongosoperación.Solo para clústeres fragmentados
$currentOp.clientMetadataInformación adicional sobre el cliente.
Para transacciones de múltiples documentos, almacena información sobre el cliente más reciente que ejecutó una operación dentro de la
$currentOp.clienttransacción.
$currentOp.appNameEl identificador de la aplicación cliente que ejecutó la operación. Utilice la
appNameopción de cadena de conexión para establecer un valor personalizado para elappNamecampo.
$currentOp.activeUn valor booleano que especifica si la operación ha comenzado. El valor es
truesi la operación ha comenzado ofalsesi está inactiva, como una conexión inactiva, una sesión inactiva o un subproceso interno actualmente inactivo. Una operación puede estar activa incluso si ha cedido el paso a otra.
$currentOp.twoPhaseCommitCoordinatorInformación sobre:
Las métricas de coordinación de confirmación para una transacción cuyas operaciones de escritura abarcan múltiples fragmentos.
La coordinación de confirmación la maneja un fragmento, y
$currentOp(ejecutado en unmongoso en un miembro del fragmento) devuelve la información de coordinación de un fragmento solo para las transacciones que el fragmento 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: falso,
$currentOpno devuelve la información$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 de múltiples fragmentos.
La combinación de
lsidy identifica latxnNumbertransacción.Disponible tanto para las métricas de coordinación de confirmación como para la operación de coordinación específica.
$currentOp.twoPhaseCommitCoordinator.txnNumberEl número de transacción para la transacción de múltiples fragmentos.
La combinación de
txnNumbery identifica lalsidtransacción.Disponible tanto para las métricas de coordinación de confirmación como para la operación de coordinación específica.
$currentOp.twoPhaseCommitCoordinator.actionLa operación de coordinación de confirmación específica generada 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
actiondel.Sólo disponible para operaciones de coordinación específicas.
$currentOp.twoPhaseCommitCoordinator.numParticipantsNúmero de fragmentos que participan en esta confirmación.
Sólo disponible para las métricas de coordinación de confirmaciones.
$currentOp.twoPhaseCommitCoordinator.stateEl paso/estado actual del proceso de coordinación de confirmación.
Paso/etapaDescripcióninactiveNo es parte activa de un 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 comprometerse o abortar.
deletingCoordinatorDocEliminar el registro local de la decisión de confirmación.
Sólo disponible para las métricas de coordinación de confirmaciones.
Véase
$currentOp.twoPhaseCommitCoordinator.stepDurationstambién.
$currentOp.twoPhaseCommitCoordinator.commitStartTimeLa fecha y hora en que se inició la confirmación.
Sólo disponible para las métricas de coordinación de confirmaciones.
$currentOp.twoPhaseCommitCoordinator.hasRecoveredFromFailoverUn valor booleano que indica si la coordinación de confirmación se reinició debido a una conmutación por error en el fragmento que está coordinando la confirmación.
Si es verdadero, entonces
hasRecoveredFromFailover$currentOp.twoPhaseCommitCoordinator.stepDurationslos tiempos especificados en pueden no ser precisos para todos los pasos.Sólo disponible para las métricas de coordinación de confirmaciones.
$currentOp.twoPhaseCommitCoordinator.stepDurationsUn documento que contiene la duración, en microsegundos, del proceso activo completado o en curso
steps/stateasí 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" : { } Sólo disponible para las métricas de coordinación de confirmaciones.
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" } } Sólo disponible para las métricas de coordinación de confirmaciones.
$currentOp.twoPhaseCommitCoordinator.deadlineLa fecha y hora en que debe finalizar la confirmación.
Sólo disponible para las métricas de coordinación de confirmaciones.
$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.runByUna matriz que contiene un documento para cada usuario que suplanta a en la operación. El documento runBy contiene
effectiveUser(s)elusernombre y ladbautenticación. En general, el usuario que suplanta es el__systemusuario; 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 solucionar problemas que puedan surgir al actualizar o degradar 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.
Sólo está presente si la operación se está ejecutando, es decir,
activesitruees.
$currentOp.transactionUn documento que contiene información de transacciones de varios documentos.
Solo se presenta si la operación es parte de una transacción:
En un conjunto de réplicas.
En un clúster fragmentado, si
$currentOpse ejecuta sin localOps:true, la información de la transacción es por fragmento.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 transacciones de varios documentos.
Sólo está presente si la operación es parte de una transacción de múltiples documentos.
$currentOp.transaction.parameters.txnNumberEl número de transacción.
Sólo está presente si la operación es parte de una transacción de múltiples documentos.
$currentOp.transaction.parameters.autocommitUn indicador booleano que indica si la confirmación automática está activada para la transacción.
Sólo está presente si la operación es parte de una transacción de múltiples documentos.
$currentOp.transaction.parameters.readConcernLa lectura se refiere a la transacción.
Las transacciones de múltiples documentos admiten la lectura de las
"snapshot"preocupaciones,"local""majority"y.Sólo está presente si la operación es parte de una transacción de múltiples documentos.
$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 presente cuando se ejecuta con localOps: verdadero para transacciones de clúster fragmentado.
$currentOp.transaction.readTimestampLa marca de tiempo de la instantánea que leen las operaciones en esta transacción
Solo está presente si la operación forma parte de una transacción multidocumento. 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
$currentOpis run with localOps: true.
En su lugar,
$currentOp.transaction.globalReadTimestampse devuelve.
$currentOp.transaction.startWallClockTimeLa fecha y hora (con zona horaria) de inicio de la transacción.
Sólo está presente si la operación es parte de una transacción de múltiples documentos.
$currentOp.transaction.timeOpenMicrosLa duración, en microsegundos, de la transacción.
El valor
timeActiveMicrosagregado altimeInactiveMicrosdebe ser igual atimeOpenMicros.Sólo está presente si la operación es parte de una transacción de múltiples documentos.
$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.Sólo está presente si la operación es parte de una transacción de múltiples documentos.
$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.Sólo está presente si la operación es parte de una transacción de múltiples documentos.
$currentOp.transaction.numParticipantsNúmero de fragmentos que participan en esta transacción.
Solo está presente si la operación es parte de una transacción en un clúster fragmentado y
$currentOpse ejecuta con localOps: verdadero
$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 fragmentado y
$currentOpse ejecuta con localOps: verdadero
$currentOp.transaction.numReadOnlyParticipantsNúmero de fragmentos afectados únicamente 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 fragmentado y
$currentOpse ejecuta con localOps: verdadero
$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 fragmentado y
$currentOpse ejecuta con localOps: verdadero
$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, consulte Límite de tiempo de ejecución para transacciones.
Sólo está presente si la operación es parte de una transacción de múltiples documentos.
$currentOp.opCadena que identifica el tipo de operación específico. Solo está presente
$currentOp.typesiopes.Los valores posibles son:
"none""update""insert""query""command""getmore""remove""killcursors"
"command"operations include most commands such as thecreateIndexes,aggregate, andfindAndModify."query"operations includefindoperations and OP_QUERY operations.
$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 ejemplo de salida contiene el objeto de comando para una operación generada por un comando con ID de
getMorecursor19234103609en una colección llamadaitemsen una base de datostestllamada:"command" : { "getMore" : Long("19234103609"), "collection" : "items", "batchSize" : 10, ... "$db" : "test" }, Si el documento de comando supera los 1 kilobytes, el documento tiene el siguiente formato:
"command" : { "$truncated": <string>, "comment": <string> } El campo
$truncatedcontiene un resumen de cadena del documento, excluyendo el campocomment, si está presente. Si el resumen aún supera los 1 kilobytes, se trunca aún más, lo que se indica con puntos suspensivos (...) al final de la cadena.El
commentcampo está 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
idleCursorlasgetmoreoperaciones y; es decir, dondetypeesidleCursoroopgetmorees.Si se informa sobre una
getmoreoperación antes de quegetmorehaya accedido a la información de su cursor, el campo no estarácursordisponible.$currentOp.cursor.lastAccessDateLa fecha y hora en que se utilizó el cursor por última vez.
Si el cursor está en uso activo (es decir,
opesgetmoreytypenoidleCursores), entonces informa la hora en que finalizó ellastAccessDateanteriorgetmoreo la hora en que se creó el cursor si este es elgetmoreprimer.
$currentOp.cursor.noCursorTimeoutLa bandera que indica que el cursor no expira cuando está inactivo, es decir, si el cursor tiene la opción
noTimeoutestablecida.Si es verdadero, el cursor no expira cuando está inactivo.
Si es falso, el cursor expira cuando está inactivo.
$currentOp.cursor.tailableIndicador que indica si el cursor es un cursor adaptable para una colección limitada. Los cursores adaptables permanecen abiertos después de que el cliente agote los resultados del cursor inicial.
$currentOp.cursor.awaitDataLa bandera que indica si el cursor adaptable debe bloquear temporalmente un comando en el cursor mientras espera nuevos datos en lugar de no devolver ningún
getMoredato.Para cursores no rastreables, el valor siempre es falso.
$currentOp.cursor.originatingCommandEl campo
originatingCommandcontiene el objeto de comando completo (por ejemplo,findoaggregate) que creó originalmente el cursor.
$currentOp.cursor.planSummaryUna cadena 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.
Una cadena que especifica el marco de consulta utilizado para procesar una operación.
$currentOp.planSummaryUna cadena que especifica si el cursor utiliza un escaneo de colección (
COLLSCAN) o un escaneo de índice (IXSCAN { ... }).No disponible cuando se ejecuta con
localOps: truemongosen.
$currentOp.prepareReadConflictsLa cantidad de veces que la operación actual tuvo que esperar a que una transacción preparada con una escritura se confirmara o cancelara.
Mientras espera, la operación continúa para retener todas las esclusas y los recursos del motor de almacenamiento necesarios.
$currentOp.writeConflictsLa cantidad de veces que la operación actual entró en conflicto con otra operación de escritura 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.Normalmente, las operaciones ceden cuando necesitan acceder a datos que MongoDB aún no ha leído completamente en memoria. Esto permite que otras operaciones con datos en memoria se completen rápidamente mientras MongoDB lee los datos para la operación que cede.
$currentOp.queryShapeHashNuevo en la versión 8.0.
queryShapeHashEs una cadena hexadecimal con el hash de una forma de consulta. Para más detalles, consulte Formas de consulta.
$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 informa el tipo y modo de bloqueos que la operación mantiene actualmente. Los tipos de bloqueo posibles son los
lockssiguientes: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 (consulte
lockspara obtener descripciones de los tipos y modos de bloqueo), devuelve la siguiente información:$currentOp.lockStats.acquireCountNúmero 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 campo proporciona un mensaje que describe el estado y el progreso de la operación. En el caso de operaciones de indexación o mapReduce, el campo indica el porcentaje de
msgfinalización.
$currentOp.progressInforma sobre el progreso de las operaciones de mapReduce o indexación. El campo corresponde al
progressporcentaje de finalización del campo.msgprogressEl campo especifica la siguiente información:
$currentOp.killPendingReturns
trueif the operation is currently flagged for termination. When the operation encounters its next safe termination point, the operation terminates.
$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.totalOperationTimeElapsedEl tiempo total transcurrido, en segundos, para la operación de re-fragmentación actual. El tiempo se establece 0 en cuando se inicia una nueva operación de re-fragmentación.
Solo está presente si se está llevando a cabo una operación de reorganización.
Nuevo en la versión 5.0.
$currentOp.remainingOperationTimeEstimatedTiempo restante estimado en segundos para la operación de reorganización actual. El tiempo se establece en -1 cuando se inicia una nueva operación de reorganización.
Solo está presente cuando se está realizando una operación de refragmentación. 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
$currentOp.documentsCopied$currentOp.bytesCopiedque y superen$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.documentsCopiedNúmero de documentos copiados de los fragmentos donantes a los fragmentos receptores durante la reorganización. Este número se establece en 0 al iniciar una nueva 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.approxBytesToCopyEl número aproximado de bytes 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.approxDocumentsToCopy$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.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 0 en 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 0 en 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 aplicación de la operación de re-fragmentación actual. En este paso, los fragmentos receptores aplican las entradas del registro de operaciones para modificar sus datos según las nuevas escrituras entrantes de los fragmentos donantes. El tiempo se establece 0 en 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.
Nuevo en la versión 5.0.
$currentOp.countWritesDuringCriticalSectionNúmero de escrituras realizadas en la sección crítica durante la operación de repartición actual. Esta sección impide nuevas escrituras entrantes en la colección que se está reparticionando. El número se establece 0 en cuando se inicia una nueva operación de repartición.
Solo está presente en un fragmento donante cuando se lleva a cabo una operación de refragmentación.
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 0 en cuando se inicia una nueva operación de repartición.
Solo está presente en un fragmento donante cuando se lleva a cabo una operación de refragmentación.
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 un fragmento donante cuando se lleva a cabo una operación de refragmentación.
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 reorganizació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 el temporal - colección de resegmentación.
- ha creado una entrada
- ha insertado entradas en
config.chunkspara rangos basados en el - Nueva clave de fragmento.
- ha insertado entradas en
- ha insertado entradas en
config.tagspara cualquier zona asociada - con la nueva clave de fragmento.
- 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 refragmentación.
Solo está presente si se está realizando una operación de refragmentación. Una vez completada, se elimina de la salida
currentOp.EstadoDescripciónactively runningLa operación de redistribución de particiones se está ejecutando activamente.
successLa operación de refragmentación se ha realizado correctamente.
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 las
ingressexecutioncolas y de la operación actual.
$currentOp.queues.isHoldingTicketIndica si la operación actualmente tiene 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 a muestrear por segundo.
Sólo 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 consultas de lectura 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.