Docs Menu
Docs Home
/ /
Administración

currentOp (comando de base de datos)

currentOp

Devuelve un documento que contiene información sobre las operaciones en curso para la mongod instancia.

Utilice la etapa de agregación$currentOpen lugar del comandocurrentOpy su método auxiliarmongoshdb.currentOp().

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.

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.

currentOp debe ejecutarse en la admin base de datos y puede aceptar varios campos opcionales.

Campo
Descripción

"$ownOps"

Booleano. Si se establece en true, devuelve información únicamente sobre las operaciones del usuario actual.

Enmongodinstancias, los usuarios siempre están autorizados a ejecutarcurrentOpcon "$ownOps": true para ver sus propias operaciones. Consulte control de acceso.

"$all"

Booleano. Si se establece en true, devuelve información sobre todas las operaciones, incluidas las operaciones en conexiones inactivas y operaciones del sistema.

"$all": true Anula cualquier filtro de campo de salida.

<filter>

Especifica las condiciones de filtro en los campos de salida. Consulta los ejemplos.

comment

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:

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.

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 } )

Tip

Los siguientes ejemplos utilizan el currentOp comando con varios documentos de consulta para filtrar la salida.

db.adminCommand(
{
currentOp: true,
"$all": true
}
)

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 } }
]
}
)

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
}
)

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\./
}
)

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/ }
]
}
)

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>
}
currentOp.type

Nuevo en la versión 4.2.

El tipo de operación. Los valores son:

  • op

  • idleSession

  • idleCursor

Si currentOp.type opes, proporciona detalles sobre la operacióncurrentOp.op específica.

currentOp.host

El nombre del host contra el cual se ejecuta la operación.

currentOp.desc

Una descripción del cliente. Esta cadena incluye connectionId el.

currentOp.connectionId

Un identificador de la conexión donde se originó la operación.

currentOp.client

Una 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 laclient transacción.

currentOp.appName

El identificador de la aplicación cliente que ejecutó la operación. Utilice la appName opción de cadena de conexión para establecer un valor personalizado para el appName campo.

currentOp.clientMetadata

Informació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 laclient transacción.

currentOp.currentOpTime

La hora de inicio de la operación.

currentOp.effectiveUsers

Un arreglo que contiene un documento para cada usuario asociado con la operación. Cada documento de usuario contiene el user nombre y la autenticación db.

Nuevo en la versión 4.2.

currentOp.runBy

Una matriz que contiene un documento para cada usuario que suplanta a en la operación. El documento runBy contiene effectiveUser(s) el user nombre y la db autenticación. En general, el usuario runBy es el __system usuario; p. ej.

"runBy" : [
{
"user" : "__system",
"db" : "local"
}
]

Solo disponible en clústeres fragmentados

Nuevo en la versión 4.2.

currentOp.lsid

El identificador de sesión.

Sólo presente si la operación está asociada a una sesión.

currentOp.transaction

Un 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.parameters

Un 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.txnNumber

El 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.autocommit

Un 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.readConcern

La 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.readTimestamp

La 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.startWallClockTime

La 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.timeOpenMicros

La duración de la transacción en microsegundos.

El valortimeActiveMicrosagregado altimeInactiveMicrosdebe ser igual atimeOpenMicros.

Sólo está presente si la operación es parte de una transacción de múltiples documentos.

currentOp.transaction.timeActiveMicros

La cantidad total de tiempo que la transacción ha estado activa, es decir, cuándo la transacción tuvo operaciones en ejecución.

El valortimeActiveMicrosagregado altimeInactiveMicrosdebe ser igual atimeOpenMicros.

Sólo está presente si la operación es parte de una transacción de múltiples documentos.

currentOp.transaction.timeInactiveMicros

La cantidad total de tiempo que la transacción ha estado inactiva; es decir, cuando la transacción no tuvo operaciones en ejecución.

El valortimeInactiveMicrosagregado altimeActiveMicrosdebe ser igual atimeOpenMicros.

Sólo está presente si la operación es parte de una transacción de múltiples documentos.

currentOp.transaction.expiryTime

La fecha y hora (con zona horaria) en que la transacción expirará y se cancelará.

El es currentOp.transaction.expiryTime igual al currentOp.transaction.startWallClockTime + transactionLifetimeLimitSeconds el.

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.twoPhaseCommitCoordinator

Informació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 un mongos o 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.type es op currentOp.desc y "TransactionCoordinator" es) generada por el coordinador de transacciones.

currentOp.twoPhaseCommitCoordinator.lsid

El identificador de sesión para la transacción de múltiples fragmentos.

La combinación de lsid y identifica la txnNumber transacció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.txnNumber

El número de transacción para la transacción de múltiples fragmentos.

La combinación de txnNumber y identifica la lsid transacció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.action

La 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.startTime

La fecha y hora de inicio action del.

Sólo disponible para operaciones de coordinación específicas.

currentOp.twoPhaseCommitCoordinator.numParticipants

Número de fragmentos que participan en esta confirmación.

Sólo disponible para las métricas de coordinación de confirmaciones.

currentOp.twoPhaseCommitCoordinator.state

El paso/estado actual del proceso de coordinación de confirmación.

Paso/etapa
Descripción

inactive

No es parte activa de un commit.

writingParticipantList

Escribir un registro local de la lista de fragmentos que forman parte de esta transacción de múltiples fragmentos.

waitingForVotes

Esperando que los participantes respondan con su voto para confirmar o abortar.

writingDecision

Redactar un registro local de la decisión del coordinador de comprometerse o abortar en función de los votos.

waitingForDecisionAck

Esperando que los participantes reconozcan la decisión del coordinador de comprometerse o abortar.

deletingCoordinatorDoc

Eliminar 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.stepDurations también.

currentOp.twoPhaseCommitCoordinator.commitStartTime

La fecha y hora en que se inició la confirmación.

Sólo disponible para las métricas de coordinación de confirmaciones.

currentOp.twoPhaseCommitCoordinator.hasRecoveredFromFailover

Un 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.stepDurations los 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.stepDurations

Un documento que contiene la duración, en microsegundos, de la coordinación de confirmación completada o en steps/state progreso:

"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.hasRecoveredFromFailover stepDurations los 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.decision

Un 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.deadline

La fecha y hora en que debe finalizar la confirmación.

Sólo disponible para las métricas de coordinación de confirmaciones.

currentOp.opid

El identificador de la operación. Puede pasar este valor a db.killOp() en para finalizar la mongosh operació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.active

Un valor booleano que especifica si la operación ha comenzado. El valor es true si la operación ha comenzado o false si 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 un signalProcessingThread inactivo, MongoDB suprime varios campos vacíos.

currentOp.secs_running

La 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,active si true es.

currentOp.microsecs_running

La 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,active si true es.

currentOp.op

Cadena que identifica el tipo de operación específico. Solo está presente currentOp.type si op es.

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, como createIndexes findAndModifyy.

currentOp.ns

El 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.command

Un 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 find llamada items en una base de datos test llamada:

"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 getMore cursor 19234103609 en una colección llamada items en una base de datos test llamada:

"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 $truncated contiene un resumen de cadena del documento, excluyendo el campo comment, 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 comment campo está presente si se pasó un comentario a la operación. Se puede adjuntar un comentario a cualquier comando de base de datos.

currentOp.planSummary

Especifica si el cursor utiliza un escaneo de colección (COLLSCAN) o un escaneo de índice (IXSCAN { ... }).

El IXSCAN también incluye el documento de especificación del índice utilizado.

currentOp.prepareReadConflicts

La 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.writeConflicts

La 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.cursor

Nuevo en la versión 4.2.

Un documento que contiene la información del cursor para getmore las operaciones; es decir, donde op getmorees.

Si se informa sobre una getmore operación antes de que getmore haya accedido a la información de su cursor, el campo no estará cursor disponible.

currentOp.cursor.cursorId

Nuevo en la versión 4.2.

El ID del cursor.

currentOp.cursor.createdDate

Nuevo en la versión 4.2.

La fecha y hora en que se creó el cursor.

currentOp.cursor.lastAccessDate

Nuevo en la versión 4.2.

La fecha y hora en que se utilizó el cursor por última vez.

currentOp.cursor.nDocsReturned

Nuevo en la versión 4.2.

El número acumulativo de documentos devueltos por el cursor.

currentOp.cursor.nBatchesReturned

Nuevo en la versión 4.2.

El número acumulativo de lotes devueltos por el cursor.

currentOp.cursor.noCursorTimeout

Nuevo 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 noTimeout establecida.

  • Si es verdadero, el cursor no expira cuando está inactivo.

  • Si es falso, el cursor expirará cuando esté inactivo.

currentOp.cursor.tailable

Nuevo 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.awaitData

Nuevo 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 getMore dato.

Para cursores no rastreables, el valor siempre es falso.

currentOp.cursor.originatingCommand

Nuevo en la versión 4.2.

El campo originatingCommand contiene el objeto de comando completo (por ejemplo, find o aggregate) que creó originalmente el cursor.

Nota

A partir de la versión 4.2, MongoDB devuelve el campo originatingCommand como un campo anidado en el nuevo campo cursor. En versiones anteriores, el campo originatingCommand era un campo de nivel superior para el documento "getmore" asociado.

currentOp.cursor.planSummary

Nuevo en la versión 4.2.

Especifica si el cursor utiliza un escaneo de colección (COLLSCAN) o un escaneo de índice (IXSCAN { ... }).

El IXSCAN también incluye el documento de especificación del índice utilizado.

currentOp.cursor.operationUsingCursorId

Nuevo en la versión 4.2.

El opid de la operación que utiliza el cursor.

Sólo está presente si el cursor no está inactivo.

currentOp.waitingForLatch

El 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 waitingForLatch interna.

Por ejemplo,

"waitingForLatch" : {
"timestamp" : ISODate("2020-03-19T23:25:58.412Z"),
"captureName" : "FutureResolution",
},
Campo de salida
Descripción

fecha 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.locks

El documento informa el tipo y modo de bloqueos que la operación mantiene actualmente. Los tipos de bloqueo posibles son los locks siguientes:

Tipo de bloqueo
Descripción

ParallelBatchWriterMode

Representa 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.

ReplicationStateTransition

Representa el bloqueo tomado para las transiciones de estado del nodo del set de réplicas.

Global

Representa el bloqueo global.

Database

Representa el bloqueo de la base de datos.

Collection

Representa un bloqueo de colección.

Mutex

Representa una exclusión mutua.

Metadata

Representa un bloqueo de metadatos.

oplog

Representa un bloqueo en el oplog.

Los modos posibles son los siguientes:

Modo de bloqueo
Descripción

R

Representa un bloqueo compartido (S).

W

Representa un bloqueo exclusivo (X).

r

Representa un bloqueo de intención compartida (IS).

w

Representa un bloqueo de intención exclusiva (IX).

currentOp.waitingForLock

Devuelve un valor booleano. waitingForLock es true si la operación está esperando un bloqueo y false si la operación tiene el bloqueo requerido.

currentOp.msg

El 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 msg finalización.

currentOp.progress

Informa sobre el progreso de las operaciones de mapReduce o indexación. El campo corresponde al progress porcentaje de finalización del campo.msg progress El campo especifica la siguiente información:

currentOp.progress.done

Informa el número completado.

currentOp.progress.total

Informa el número total.

currentOp.killPending

Devuelve true si la operación está marcada para finalizar. Al alcanzar su siguiente punto de finalización seguro, finalizará.

currentOp.numYields

numYields es 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.dataThroughputLastSecond

Cantidad de datos (en MiB) procesados ​​por la operación en el último validate validate segundo. 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.dataThroughputAverage

La cantidad promedio de datos (en MiB) procesados ​​por la operación. Solo validate validate 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.fsyncLock

Especifica si la base de datos está actualmente bloqueada fsync write/snapshot para.

Sólo aparece si está bloqueado, es decir, si fsyncLock true es.

currentOp.info

Información sobre cómo desbloquear la base de datos dedb.fsyncLock(). Solo aparece sifsyncLockes true.

currentOp.lockStats

Para cada tipo y modo de bloqueo (consulte currentOp.locks para obtener descripciones de los tipos y modos de bloqueo), devuelve la siguiente información:

currentOp.lockStats.acquireCount

Número de veces que la operación adquirió el bloqueo en el modo especificado.

currentOp.lockStats.acquireWaitCount

Número de veces que la operación tuvo que esperar las acquireCount adquisiciones de bloqueo porque los bloqueos se mantuvieron en un modo conflictivo. es menor oacquireWaitCount igual acquireCount a.

currentOp.lockStats.timeAcquiringMicros

Tiempo acumulado en microsegundos que la operación tuvo que esperar para adquirir los bloqueos.

timeAcquiringMicros dividido por acquireWaitCount proporciona un tiempo de espera promedio aproximado para la moda de bloqueo particular.

currentOp.lockStats.deadlockCount

Número de veces que la operación encontró bloqueos mientras esperaba adquisiciones de bloqueo.

currentOp.waitingForFlowControl

Un 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.flowControlStats

Las estadísticas de control de flujo para esta operación.

Nuevo en la versión 4.2.

currentOp.flowControlStats.acquireCount

El número de veces que esta operación adquirió un ticket.

Nuevo en la versión 4.2.

currentOp.flowControlStats.acquireWaitCount

La cantidad de veces que esta operación esperó para adquirir un ticket.

Nuevo en la versión 4.2.

currentOp.flowControlStats.timeAcquiringMicros

El tiempo total que esta operación ha esperado para adquirir un ticket.

Nuevo en la versión 4.2.

currentOp.totalOperationTimeElapsed

El 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.remainingOperationTimeEstimated

remainingOperationTimeEstimatedSecs: Tiempo restante estimado en segundos para la operación de re-fragmentación actual. Se devuelve como -1 al iniciar una nueva operación de re-fragmentación.

Empezando en:

  • MongoDB,5.0 pero antes de MongoDB,6.1 remainingOperationTimeEstimatedSecs solo está disponible en un fragmento de destinatario durante una operación de reorganización de fragmentos.

  • MongoDB 6.1, remainingOperationTimeEstimatedSecs también está disponible en el coordinador durante una operación de reorganización.

La operación de refragmentación realiza estas fases en orden:

  1. La fase de clonación duplica los datos de la recopilación actual.

  2. La fase de recuperación aplica cualquier operación de escritura pendiente a la colección fragmentada nuevamente.

remainingOperationTimeEstimatedSecs se 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.approxDocumentsToCopy

El 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.bytesCopied que y superen $currentOp.approxDocumentsToCopy a $currentOp.approxBytesToCopy y, 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.documentsCopied

Nú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.approxBytesToCopy

El 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.documentsCopied y $currentOp.bytesCopied superen $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.bytesCopied

El 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.totalCopyTimeElapsed

Tiempo 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.oplogEntriesFetched

Nú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.oplogEntriesApplied

El 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.totalApplyTimeElapsed

El 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.countWritesDuringCriticalSection

Nú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.totalCriticalSectionTimeElapsed

El 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.donorState

El estado actual de un fragmento donante para la operación de refragmentación. El estado se establece unused en 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.

Estado
Descripción

unused

La operación de re-fragmentación está a punto de comenzar o de recuperarse de una conmutación por error primaria.

preparing-to-donate

La partición donante se está preparando para donar datos a las particiones receptoras.

donating-initial-data

El fragmento donante está transfiriendo datos a los fragmentos receptores.

donating-oplog-entries

La partición donante está donando entradas de oplog a las particiones receptoras.

preparing-to-block-writes

La partición donante está a punto de impedir nuevas operaciones de guardado en la colección que se está redistribuyendo.

error

Se ha producido un error durante la operación de redistribución de fragmentos.

blocking-writes

La 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.

done

La 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.recipientState

El estado actual de un fragmento destinatario para una operación de re-fragmentación. El estado se establece unused en 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.

Estado
Descripción

unused

La operación de re-fragmentación está a punto de comenzar o de recuperarse de una conmutación por error primaria.

awaiting-fetch-timestamp

El fragmento receptor está esperando que los fragmentos donantes estén preparados para donar sus datos.

creating-collection

La partición receptora está creando la nueva colección particionada.

cloning

La partición receptora está recibiendo datos de las particiones donantes.

applying

La 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.

error

Se ha producido un error durante la operación de redistribución de fragmentos.

strict-consistency

La partición receptora tiene todos los cambios de datos almacenados en una colección temporal.

done

La operación de redistribución está completa.

Nuevo en la versión 5.0.

currentOp.coordinatorState

El 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 unused cuando una nueva operación de resharding comienza.

Solo está presente en el servidor de configuración coordinador.

Estado
Descripción

unused

La operación de re-fragmentación está a punto de comenzar o de recuperarse de una conmutación por error primaria.

initializing

El coordinador de redistribución ha insertado el documento del coordinador en config.reshardingOperations y ha agregado el reshardingFields a la entrada config.collections para la colección original.

preparing-to-donate

El coordinador de redistribución

  • ha creado una entrada config.collections para la colección de redistribución temporal.

  • ha insertado entradas en config.chunks para los rangos basados en la nueva clave de partición.

  • ha insertado entradas en config.tags para 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 minFetchTimestamp y estén listas para donar.

cloning

El 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.

applying

El 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-writes

El 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.

aborting

Se produjo un error irrecuperable durante la operación de redistribución o se ejecutó el comando abortReshardCollection (o el método sh.abortReshardCollection()).

committing

El coordinador de redistribución remueve la entrada config.collections para la colección de redistribución temporal. A continuación, el coordinador agrega el recipientFields a la entrada de la colección de origen.

Nuevo en la versión 5.0.

currentOp.opStatus

El 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.

Estado
Descripción

actively running

La operación de redistribución de particiones se está ejecutando activamente.

success

La operación de refragmentación se ha realizado correctamente.

failure

La operación de refragmentación ha fallado.

canceled

Se canceló la operación de refragmentación.

Nuevo en la versión 5.0.

Volver

createIndexes

En esta página