Definición
Compatibilidad
Este comando está disponible en implementaciones alojadas en los siguientes entornos:
MongoDB Atlas: El servicio totalmente gestionado para implementaciones de MongoDB en la nube
Nota
Este comando es compatible con todos los clústeres de MongoDB Atlas. Para obtener información sobre el soporte de Atlas para todos los comandos, consulte Comandos no compatibles.
MongoDB Enterprise: La versión basada en suscripción y autogestionada de MongoDB
MongoDB Community: La versión de MongoDB con código fuente disponible, de uso gratuito y autogestionada.
Sintaxis
El comando tiene la siguiente sintaxis:
db.adminCommand( { currentOp: 1 } )
Nota
A partir de MongoDB 5.0, la etapa de agregación $currentOp se usa al ejecutar el método asistente db.currentOp() con mongosh.
Teniendo esto en cuenta, en la 5.0 versión del shell y con mongosh, los conjuntos dedb.currentOp() 16resultados no están sujetos al límite de tamaño de retorno del documento BSON de MB para los documentos de las mongo versiones heredadas anteriores.
Comportamiento
currentOp debe ejecutarse en la admin base de datos y puede aceptar varios campos opcionales.
Campo | Descripción |
|---|---|
| |
| Booleano. Si se establece en
|
<filter> | Especifica las condiciones de filtro en los campos de salida. Consulta los ejemplos. |
| Opcional. Un comentario proporcionado por el usuario para adjuntar a este comando. Una vez configurado, este comentario aparece junto a los registros de este comando en las siguientes ubicaciones:
Un comentario puede ser de cualquier tipo BSON válido (string, objeto, arreglo, etc.). |
currentOp y el generador de perfiles de base de datos informa la misma información de diagnóstico básica para las operaciones CRUD, incluida lo siguiente:
getMore(OP_GET_MORE ycommand)
Estas operaciones también se incluyen en el registro de las query lentas. Consulta slowOpThresholdMs para obtener más información sobre el registro de query lentas.
Control de acceso
En los sistemas que se ejecutan con authorization, se debe tener acceso que incluya la acción de privilegio inprog.
Los usuarios pueden usar $ownOps en mongod instancias para ver sus propias operaciones sin la inprog acción de privilegio.
db.adminCommand( { currentOp: 1, "$ownOps": 1 } )
Ejemplos
Los siguientes ejemplos utilizan el currentOp comando con varios documentos de consulta para filtrar la salida.
Mostrar todas las operaciones actuales
db.adminCommand( { currentOp: true, "$all": true } )
Operaciones de guardar en espera de un bloqueo
El siguiente ejemplo devuelve información sobre todas las operaciones de guardar que están esperando un bloqueo:
db.adminCommand( { currentOp: true, "waitingForLock" : true, $or: [ { "op" : { "$in" : [ "insert", "update", "remove" ] } }, { "command.findandmodify": { $exists: true } } ] } )
Operaciones activas sin resultados
El siguiente ejemplo devuelve información sobre todas las operaciones en ejecución activas que nunca han dado resultados:
db.adminCommand( { currentOp: true, "active" : true, "numYields" : 0, "waitingForLock" : false } )
Operaciones activas en una base de datos específica
El siguiente ejemplo devuelve información sobre todas las operaciones activas para la base de datos db1 que se han estado ejecutando más de 3 segundos:
db.adminCommand( { currentOp: true, "active" : true, "secs_running" : { "$gt" : 3 }, "ns" : /^db1\./ } )
Operaciones de indexación activas
El siguiente ejemplo devuelve información sobre las operaciones de creación de índices:
db.adminCommand( { currentOp: true, $or: [ { op: "command", "command.createIndexes": { $exists: true } }, { op: "none", "msg" : /^Index Build/ } ] } )
Ejemplo de salida
El siguiente es un prototipo de la currentOp salida cuando se ejecuta de forma independiente:
{ "inprog": [ { "type" : <string>, "host" : <string>, "desc" : <string>, "connectionId" : <number>, "client" : <string>, "appName" : <string>, "clientMetadata" : <document>, "active" : <boolean>, "currentOpTime" : <string>, "effectiveUsers" : [ { "user" : <string>, "db" : <string> } ], "opid" : <number>, "lsid" : { "id" : <UUID>, "uid" : <BinData> }, "secs_running" : <Long()>, "microsecs_running" : <number>, "op" : <string>, "ns" : <string>, "command" : <document>, "planSummary": <string>, "cursor" : { // only for getMore operations "cursorId" : <Long()>, "createdDate" : <ISODate()>, "lastAccessDate" : <ISODate()>, "nDocsReturned" : <Long()>, "nBatchesReturned" : <Long()>, "noCursorTimeout" : <boolean>, "tailable" : <boolean>, "awaitData" : <boolean>, "originatingCommand" : <document>, "planSummary" : <string>, "operationUsingCursorId" : <Long()> }, "msg": <string>, "progress" : { "done" : <number>, "total" : <number> }, "killPending" : <boolean>, "numYields" : <number>, "dataThroughputLastSecond" : <number>, "dataThroughputAverage" : <number>, "waitingForLatch" : { "timestamp" : <ISODate()>, "captureName" : <string> }, "locks" : { "ParallelBatchWriterMode" : <string>, "ReplicationStateTransition" : <string>, "Global" : <string>, "Database" : <string>, "Collection" : <string>, "Metadata" : <string>, "oplog" : <string> }, "waitingForLock" : <boolean>, "lockStats" : { "ParallelBatchWriterMode" : { "acquireCount": { "r": <NumberLong>, "w": <NumberLong>, "R": <NumberLong>, "W": <NumberLong> }, "acquireWaitCount": { "r": <NumberLong>, "w": <NumberLong>, "R": <NumberLong>, "W": <NumberLong> }, "timeAcquiringMicros" : { "r" : Long(0), "w" : Long(0), "R" : Long(0), "W" : Long(0) }, "deadlockCount" : { "r" : Long(0), "w" : Long(0), "R" : Long(0), "W" : Long(0) } }, "ReplicationStateTransition" : { ... }, "Global": { ... }, "Database" : { ... }, ... } }, ... ], "fsyncLock": <boolean>, "info": <string>, "ok": <num> }
El siguiente es un prototipo de la currentOp salida cuando se ejecuta en un elemento principal de un conjunto de réplicas:
{ "inprog": [ { "type" : <string>, "host" : <string>, "desc" : <string>, "connectionId" : <number>, "client" : <string>, "appName" : <string>, "clientMetadata" : <document>, "lsid" : { "id" : <UUID>, "uid" : <BinData> }, "transaction" : { "parameters" : { "txnNumber" : <Long()>, "autocommit" : <boolean>, "readConcern" : { "level" : <string> } }, "readTimestamp" : <Timestamp>, "startWallClockTime" : <string>, "timeOpenMicros" : <Long()>, "timeActiveMicros" : <Long()>, "timeInactiveMicros" : <Long()>, "expiryTime" : <string>, }, "active" : <boolean>, "currentOpTime" : <string>, "effectiveUsers" : [ { "user" : <string>, "db" : <string> } ], "opid" : <number>, "secs_running" : <Long()>, "microsecs_running" : <number>, "op" : <string>, "ns" : <string>, "command" : <document>, "originatingCommand" : <document>, "planSummary": <string>, "prepareReadConflicts" : <Long()>, "writeConflicts" : <Long()>, "cursor" : { // only for getMore operations "cursorId" : <Long()>, "createdDate" : <ISODate()>, "lastAccessDate" : <ISODate()>, "nDocsReturned" : <Long()>, "nBatchesReturned" : <Long()>, "noCursorTimeout" : <boolean>, "tailable" : <boolean>, "awaitData" : <boolean>, "originatingCommand" : <document>, "planSummary" : <string>, "operationUsingCursorId" : <Long()> }, "msg": <string>, "progress" : { "done" : <number>, "total" : <number> }, "killPending" : <boolean>, "numYields" : <number>, "dataThroughputLastSecond" : <number>, "dataThroughputAverage" : <number>, "waitingForLatch" : { "timestamp" : <ISODate()>, "captureName" : <string> }, "locks" : { "ParallelBatchWriterMode" : <string>, "ReplicationStateTransition" : <string>, "Global" : <string>, "Database" : <string>, "Collection" : <string>, "Metadata" : <string>, "oplog" : <string> }, "waitingForLock" : <boolean>, "lockStats" : { "ParallelBatchWriterMode" : { "acquireCount": { "r": <NumberLong>, "w": <NumberLong>, "R": <NumberLong>, "W": <NumberLong> }, "acquireWaitCount": { "r": <NumberLong>, "w": <NumberLong>, "R": <NumberLong>, "W": <NumberLong> }, "timeAcquiringMicros" : { "r" : Long(0), "w" : Long(0), "R" : Long(0), "W" : Long(0) }, "deadlockCount" : { "r" : Long(0), "w" : Long(0), "R" : Long(0), "W" : Long(0) } }, "ReplicationStateTransition" : { ... }, "Global" : { ... }, "Database" : { ... }, ... } }, ... ], "fsyncLock": <boolean>, "info": <string>, "ok": <num>, "operationTime": <timestamp>, "$clusterTime": <document> }
El siguiente es un ejemplo del resultado de currentOp cuando se ejecuta en un mongos de un clúster (los campos pueden variar según la operación informada):
{ "inprog": [ { "shard": <string>, "type" : <string>, "host" : <string>, "desc" : <string>, "connectionId" : <number>, "client_s" : <string>, "appName" : <string>, "clientMetadata" : <document>, "lsid" : { "id" : <UUID>, "uid" : <BinData> }, "transaction" : { "parameters" : { "txnNumber" : <Long()>, "autocommit" : <boolean>, "readConcern" : { "level" : <string> } }, "readTimestamp" : <Timestamp>, "startWallClockTime" : <string>, "timeOpenMicros" : <Long()>, "timeActiveMicros" : <Long()>, "timeInactiveMicros" : <Long()>, "expiryTime" : <string>, }, "active" : <boolean>, "currentOpTime" : <string>, "effectiveUsers" : [ { "user" : <string>, "db" : <string> } ], "runBy" : [ { "user" : <string>, "db" : <string> } ], "twoPhaseCommitCoordinator" : { "lsid" : { "id" : <UUID>, "uid" : <BinData> }, "txnNumber" : <NumberLong>, "numParticipants" : <NumberLong>, "state" : <string>, "commitStartTime" : <ISODate>, "hasRecoveredFromFailover" : <boolean>, "stepDurations" : <document>, "decision" : <document>, "deadline" : <ISODate> } "opid" : <string>, "secs_running" : <Long()>, "microsecs_running" : <number>, "op" : <string>, "ns" : <string>, "command" : <document>, "configTime" : <Timestamp>, // Starting in 5.0 "topologyTime" : <Timestamp>, // Starting in 5.0 "planSummary": <string>, "prepareReadConflicts" : <Long()>, "writeConflicts" : <Long()>, "cursor" : { // only for getMore operations "cursorId" : <Long()>, "createdDate" : <ISODate()>, "lastAccessDate" : <ISODate()>, "nDocsReturned" : <Long()>, "nBatchesReturned" : <Long()>, "noCursorTimeout" : <boolean>, "tailable" : <boolean>, "awaitData" : <boolean>, "originatingCommand" : <document>, "planSummary" : <string>, "operationUsingCursorId" : <Long()> }, "msg": <string>, "progress" : { "done" : <number>, "total" : <number> }, "killPending" : <boolean>, "numYields" : <number>, "dataThroughputLastSecond" : <number>, "dataThroughputAverage" : <number>, "waitingForLatch" : { "timestamp" : <ISODate()>, "captureName" : <string> }, "locks" : { "ParallelBatchWriterMode" : <string>, "ReplicationStateTransition" : <string>, "Global" : <string>, "Database" : <string>, "Collection" : <string>, "Metadata" : <string>, "oplog" : <string> }, "waitingForLock" : <boolean>, "lockStats" : { "ParallelBatchWriterMode": { "acquireCount": { "r": <NumberLong>, "w": <NumberLong>, "R": <NumberLong>, "W": <NumberLong> }, "acquireWaitCount": { "r": <NumberLong>, "w": <NumberLong>, "R": <NumberLong>, "W": <NumberLong> }, "timeAcquiringMicros" : { "r" : Long(0), "w" : Long(0), "R" : Long(0), "W" : Long(0) }, "deadlockCount" : { "r" : Long(0), "w" : Long(0), "R" : Long(0), "W" : Long(0) } }, "ReplicationStateTransition" : { ... }, "Global" : { ... }, "Database" : { ... }, ... } }, ... ], "ok": <num>, "operationTime": <timestamp>, "$clusterTime": <document> }
Campos de salida
currentOp.typeNuevo en la versión 4.2.
El tipo de operación. Los valores son:
opidleSessionidleCursor
Si
currentOp.typeopes, proporciona detalles sobre la operacióncurrentOp.opespecífica.
currentOp.descUna descripción del cliente. Esta cadena incluye
connectionIdel.
currentOp.clientUna cadena con información sobre dónde se originó 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
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.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
clienttransacción.
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.Nuevo en la versión 4.2.
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 runBy es el__systemusuario; p. ej."runBy" : [ { "user" : "__system", "db" : "local" } ] Solo disponible en clústeres fragmentados
Nuevo en la versión 4.2.
currentOp.transactionUn documento que contiene información de transacciones de varios documentos.
Sólo está presente si la operación es parte de una transacción de múltiples documentos.
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.readTimestampLa marca de tiempo de la instantánea que leen las operaciones en la transacción.
Sólo está presente si la operación es parte de una transacción de múltiples documentos.
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 de la transacción en microsegundos.
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.expiryTimeLa fecha y hora (con zona horaria) en que la transacción expirará y se cancelará.
El es
currentOp.transaction.expiryTimeigual alcurrentOp.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.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 confirmaciones 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 aquellas transacciones que actualmente están siendo coordinadas por ese fragmento.Para filtrar solo las métricas de coordinación de confirmaciones:
db.currentOp( { desc: "transaction coordinator" }) Una operación de coordinación de confirmación específica (es decir,
currentOp.typeesopcurrentOp.descy"TransactionCoordinator"es) generada por el coordinador de transacciones.
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
hasRecoveredFromFailovercurrentOp.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, de la coordinación de confirmación completada o en
steps/stateprogreso:"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 compromiso:
"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.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.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 o un subproceso interno actualmente inactivo. Una operación puede estar activa incluso si ha cedido el paso a otra. Para algunos subprocesos en segundo plano inactivos, como unsignalProcessingThreadinactivo, MongoDB suprime varios campos vacíos.
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 aparece 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 aparece si la operación se está ejecutando, es decir,
activesitruees.
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"
"query"Las operaciones incluyen operaciones de lectura."command"Las operaciones incluyen la mayoría de los comandos, comocreateIndexesfindAndModifyy.
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.planSummaryEspecifica 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.
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 actual continúa manteniendo todos los bloqueos necesarios y los recursos del motor de almacenamiento.
Nuevo en la versión 4.2.
currentOp.writeConflictsLa cantidad de veces que la operación actual entró en conflicto con otra operación de escritura en el mismo documento.
Nuevo en la versión 4.2.
currentOp.cursorNuevo en la versión 4.2.
Un documento que contiene la información del cursor para
getmorelas operaciones; es decir, dondeopgetmorees.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.lastAccessDateNuevo en la versión 4.2.
La fecha y hora en que se utilizó el cursor por última vez.
currentOp.cursor.nDocsReturnedNuevo en la versión 4.2.
El número acumulativo de documentos devueltos por el cursor.
currentOp.cursor.nBatchesReturnedNuevo en la versión 4.2.
El número acumulativo de lotes devueltos por el cursor.
currentOp.cursor.noCursorTimeoutNuevo en la versión 4.2.
La bandera que indica que el cursor no expirará 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 expirará cuando esté inactivo.
currentOp.cursor.tailableNuevo en la versión 4.2.
Indicador 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.awaitDataNuevo en la versión 4.2.
La 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.originatingCommandNuevo en la versión 4.2.
El campo
originatingCommandcontiene el objeto de comando completo (por ejemplo,findoaggregate) que creó originalmente el cursor.Nota
A partir de la versión 4.2, MongoDB devuelve el campo
originatingCommandcomo un campo anidado en el nuevo campocursor. En versiones anteriores, el campooriginatingCommandera un campo de nivel superior para el documento"getmore"asociado.
currentOp.waitingForLatchEl documento solo está disponible si la operación está esperando adquirir un primitivo de bloqueo interno (también conocido como pestillo) o que se cumpla una condición
waitingForLatchinterna.Por ejemplo,
"waitingForLatch" : { "timestamp" : ISODate("2020-03-19T23:25:58.412Z"), "captureName" : "FutureResolution", }, Campo de salidaDescripciónfecha y hora
La fecha y hora en que se inició la operación de espera.
nombre de captura
El nombre interno de la sección donde se encuentra actualmente bloqueada la operación.
Nuevo en la versión 4.2.2.
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.
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.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.killPendingDevuelve
truesi la operación está marcada para finalizar. Al alcanzar su siguiente punto de finalización seguro, finalizará.
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.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.fsyncLockEspecifica si la base de datos está actualmente bloqueada
fsync write/snapshotpara.Sólo aparece si está bloqueado, es decir, si
fsyncLocktruees.
currentOp.infoInformación sobre cómo desbloquear la base de datos de
db.fsyncLock(). Solo aparece sifsyncLockestrue.
currentOp.lockStatsPara cada tipo y modo de bloqueo (consulte
currentOp.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.waitingForFlowControlUn valor booleano que indica si la operación está en proceso de esperar el control de flujo.
Nuevo en la versión 4.2.
currentOp.flowControlStatsLas estadísticas de control de flujo para esta operación.
Nuevo en la versión 4.2.
currentOp.flowControlStats.acquireCountEl número de veces que esta operación adquirió un ticket.
Nuevo en la versión 4.2.
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.remainingOperationTimeEstimatedremainingOperationTimeEstimatedSecs: Tiempo restante estimado en segundos para la operación de re-fragmentación actual. Se devuelve como-1al iniciar una nueva operación de re-fragmentación.Empezando en:
MongoDB,5.0 pero antes de MongoDB,6.1
remainingOperationTimeEstimatedSecssolo está disponible en un fragmento de destinatario durante una operación de reorganización de fragmentos.MongoDB 6.1,
remainingOperationTimeEstimatedSecstambién está disponible en el coordinador durante una operación de reorganización.
La operación de refragmentación realiza estas fases en orden:
La fase de clonación duplica los datos de la recopilación actual.
La fase de recuperación aplica cualquier operación de escritura pendiente a la colección fragmentada nuevamente.
remainingOperationTimeEstimatedSecsse establece en una estimación de tiempo pesimista:La estimación del tiempo de la fase de recuperación se establece en el tiempo de la fase de clonación, que es un tiempo relativamente largo.
En la práctica, si solo hay unas pocas operaciones de escritura pendientes, el tiempo real de la fase de recuperación es relativamente corto.
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 a la colección que se está repartiendo. 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 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.
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 ha producido un error durante la operación de redistribución de fragmentos.
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 la colección de redistribución temporal.ha insertado entradas en
config.chunkspara los rangos basados en la nueva clave de partición.ha insertado entradas en
config.tagspara cualquier zona asociada con la nueva clave de partición.
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.