Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/ /
Etapas de la pipeline de agregación

$currentOp (etapa de agregación)

$currentOp

Devuelve un flujo de documentos que contiene información sobre operaciones activas y/o inactivas, así como sesiones inactivas que mantienen bloqueos como parte de una transacción. La etapa devuelve un documento para cada operación o sesión. Para ejecutar $currentOp, utiliza el db.aggregate() asistente en la base de datos admin.

La etapa de agregación $currentOp es preferible a el comando currentOp y su método asistente mongosh db.currentOp(). Debido a que el comando currentOp y el método auxiliar db.currentOp() devuelven los resultados en un único documento, el tamaño total del conjunto de resultados currentOp está sujeto al límite máximo de 16MB del tamaño BSON para documentos. La $currentOp etapa devuelve un cursor sobre un flujo de documentos, cada uno de los cuales informa sobre una sola operación. Cada documento de operación está sujeto al límite de BSON de 16MB, pero a diferencia del comando currentOp, no hay límite en el tamaño total del conjunto de resultados.

$currentOp también te permite realizar transformaciones arbitrarias de los resultados a medida que los documentos pasan por el pipeline.

Cambiado en la versión 4.2.

{ $currentOp: { allUsers: <boolean>, idleConnections: <boolean>, idleCursors: <boolean>, idleSessions: <boolean>, localOps: <boolean> } }

$currentOp toma un documento de opciones como su operando:

Opción
Descripción

Booleano.

  • Si se establece en false, $currentOp solo informará sobre operaciones/conexiones inactivas/cursores inactivos/sesiones inactivas que pertenezcan al usuario que ejecutó el comando.

  • Si se establece en true, $currentOp reportará las operaciones correspondientes a todos los usuarios.

Para conjuntos autónomos y sets de réplicas que aplican el control de acceso, se requiere el privilegio inprog si allUsers: true.

Para los clústeres particionados que aplican el control de acceso, se requiere el privilegio inprog para ejecutar $currentOp.

Se establece por defecto en false.

booleano. Si se configura en false, $currentOp solo reportará las operaciones activas. Si se establece en true, se devolverán todas las operaciones, incluidas las conexiones inactivas.

Se establece por defecto en false.

Booleano.

Si se configura en true, $currentOp informará sobre los cursores que están "inactivos"; es decir, abiertos pero que no están actualmente activos en una operación getMore.

La información sobre los cursores inactivos tiene la type configurada en "idleCursor".

La información sobre los cursores actualmente activos en una getMore información de la operación tiene el type configurado en "op" y el op configurado en getmore.

Se establece por defecto en false.

Nuevo en la versión 4.2.

Booleano.

  • Si está establecido en true, además de las operaciones activas/inactivas, $currentOp informará sobre:

    • Sesiones inactivas que están reteniendo bloqueos como parte de una transacción. Cada sesión inactiva aparecerá como un documento separado en el flujo $currentOp.

      El documento de una sesión incluye información sobre la ID de la sesión en el campo lsid y la transacción en el campo transaction.

      A partir de MongoDB 4.2, la información sobre sesiones inactivas tiene el type configurado en "idleSession".

    • $currentOp.twoPhaseCommitCoordinator in inactive state

  • Si se establece en false, $currentOp no informará sobre:

Se establece por defecto en true.

booleano. Si se establece en true para una agregación que se ejecuta en mongos, $currentOp solo informa aquellas operaciones que se ejecutan localmente en ese mongos. Si false, entonces el $currentOp reportará en su lugar las operaciones que se ejecutan en las particiones.

El parámetro localOps no tiene efecto en las agregaciones de $currentOp que se ejecutan en mongod.

Se establece por defecto en false.

booleano. Determina si la información de la pila de llamadas se devuelve como parte del campo de salida waitingForLatch.

Se establece por defecto en false.

Nuevo en la versión 4.2.2.

Omitir cualquiera de los parámetros anteriores causará que $currentOp use el valor por defecto de ese parámetro. Especifica un documento vacío, como se muestra a continuación, para usar los valores por defecto de todos los parámetros.

{ $currentOp: { } }
  • $currentOp debe ser la primera etapa en la pipeline.

  • Los pipelines que empiezan con $currentOp solo se pueden ejecutar en la base de datos admin.

  • Para conjuntos autónomos y sets de réplicas que aplican el control de acceso, se requiere el privilegio de inprog para ejecutar $currentOp si allUsers: true.

  • Para los clústeres fragmentados que hacen cumplir el control de acceso, se requiere el privilegio inprog para ejecutar el $currentOp.

Este ejemplo crea las siguientes etapas para devolver información sobre las sesiones inactivas que están manteniendo bloqueos como parte de una transacción:

  • La primera etapa devuelve documentos para todas las operaciones activas, así como sesiones inactivas que mantienen bloqueos como parte de una transacción.

  • La segunda etapa filtra aquellos documentos relacionados con sesiones inactivas que están reteniendo bloqueos como parte de una transacción.

db.getSiblingDB("admin").aggregate( [
{ $currentOp : { allUsers: true, idleSessions: true } },
{ $match : { active: false, transaction : { $exists: true } } }
] )

Puedes usar $currentOp.type para especificar un filtro equivalente:

db.getSiblingDB("admin").aggregate( [
{ $currentOp : { allUsers: true, idleSessions: true } },
{ $match : { type: "idleSession" } }
] )

Tip

Para las transacciones en un clúster fragmentado, incluye localOps:true en los ejemplos anteriores para obtener una vista compuesta de las transacciones.

Ambas operaciones devuelven documentos de la siguiente forma:

Cuando se ejecuta en un mongod que forma parte de un set de réplicas:

{
"type" : "idleSession",
"host" : "example.mongodb.com:27017",
"desc" : "inactive transaction",
"client" : "198.51.100.1:50428",
"connectionId" : Long(32),
"appName" : "",
"clientMetadata" : {
"driver" : {
"name" : "PyMongo",
"version" : "3.9.0"
},
"os" : {
"type" : "Darwin",
"name" : "Darwin",
"architecture" : "x86_64",
"version" : "10.14.5"
},
"platform" : "CPython 3.7.1.final.0"
},
"lsid" : {
"id" : UUID("ff21e1a9-a130-4fe0-942f-9e6b6c67ea3c"),
"uid" : BinData(0,"3pxqkATNUYKV/soT7qqKE0zC0BFb0pBz1pk4xXcSHsI=")
},
"transaction" : {
"parameters" : {
"txnNumber" : Long(4),
"autocommit" : false,
"readConcern" : {
"level" : "snapshot",
"afterClusterTime" : Timestamp(1563892246, 1)
}
},
"readTimestamp" : Timestamp(0, 0),
"startWallClockTime" : "2019-07-23T10:30:49.461-04:00",
"timeOpenMicros" : Long(1913590),
"timeActiveMicros" : Long(55),
"timeInactiveMicros" : Long(1913535),
"expiryTime" : "2019-07-23T10:31:49.461-04:00"
},
"waitingForLock" : false,
"active" : false,
"locks" : {
"ReplicationStateTransition" : "w",
"Global" : "w",
"Database" : "w",
"Collection" : "w"
},
"lockStats" : {
"ReplicationStateTransition" : {
"acquireCount" : {
"w" : Long(5)
}
},
"Global" : {
"acquireCount" : {
"r" : Long(3),
"w" : Long(1)
}
},
"Database" : {
"acquireCount" : {
"r" : Long(2),
"w" : Long(1)
}
},
"Collection" : {
"acquireCount" : {
"w" : Long(1)
}
},
"Mutex" : {
"acquireCount" : {
"r" : Long(3)
}
},
"oplog" : {
"acquireCount" : {
"r" : Long(2)
}
}
},
"waitingForFlowControl" : false,
"flowControlStats" : {},
}

Ejecutar $currentOp con locaOps: verdadero proporciona una vista compuesta de las transacciones en curso que se ejecutan en ese mongos, en lugar de información sobre particiones individuales.

db.getSiblingDB("admin").aggregate( [
{ $currentOp : { allUsers: true, idleSessions: true, localOps: true } },
{ $match : { type: "idleSession" } }
] );
// or
db.getSiblingDB("admin").aggregate( [
{ $currentOp : { allUsers: true, idleSessions: true, localOps: true } },
{ $match : { active: false, transaction : { $exists: true } } }
] )
{
"type" : "idleSession",
"host" : "example.mongodb.com:27017",
"desc" : "inactive transaction",
"client" : "198.51.100.1:49618",
"connectionId" : Long(48),
"appName" : "",
"clientMetadata" : {
"driver" : {
"name" : "PyMongo",
"version" : "3.9.0"
},
"os" : {
"type" : "Darwin",
"name" : "Darwin",
"architecture" : "x86_64",
"version" : "10.14.6"
},
"platform" : "CPython 3.7.1.final.0",
"mongos" : {
"host" : "example.mongodb.com:27017",
"client" : "198.51.100.1:53268",
"version" : "4.2.1"
}
},
"lsid" : {
"id" : UUID("2c9ce111-133e-45b7-a00f-a7871005cae1"),
"uid" : BinData(0,"3pxqkATNUYKV/soT7qqKE0zC0BFb0pBz1pk4xXcSHsI=")
},
"active" : false,
"transaction" : {
"parameters" : {
"txnNumber" : Long(2),
"autocommit" : false,
"readConcern" : {
"level" : "snapshot",
"afterClusterTime" : Timestamp(1571869019, 2)
}
},
"globalReadTimestamp" : Timestamp(1571869019, 2),
"startWallClockTime" : "2019-10-23T18:16:59.341-04:00",
"timeOpenMicros" : Long(169244639),
"timeActiveMicros" : Long(535),
"timeInactiveMicros" : Long(169244104),
"numParticipants" : 2,
"participants" : [
{
"name" : "shardB",
"coordinator" : true,
"readOnly" : false
},
{
"name" : "shardA",
"coordinator" : false,
"readOnly" : false
}
],
"numReadOnlyParticipants" : 0,
"numNonReadOnlyParticipants" : 2
}
}

Cuando se ejecuta sin localOps:true en el mongos, la información de la transacción es por partición.

Cuando se ejecuta en un mongos sin localOps:true, la información sobre la transacción es por partición.

{
"shard" : "shardB",
"type" : "idleSession",
"host" : "shardB.mongodb.com:27018",
"desc" : "inactive transaction",
"client_s" : "198.51.100.1:53961",
"connectionId" : Long(63),
"appName" : "",
"clientMetadata" : {
"driver" : {
"name" : "PyMongo",
"version" : "3.9.0"
},
"os" : {
"type" : "Darwin",
"name" : "Darwin",
"architecture" : "x86_64",
"version" : "10.14.6"
},
"platform" : "CPython 3.7.1.final.0",
"mongos" : {
"host" : "example.mongodb.com:27017",
"client" : "198.51.100.1:53976",
"version" : "4.2.0"
}
},
"lsid" : {
"id" : UUID("720d403c-8daf-40bb-b61e-329e20b0493b"),
"uid" : BinData(0,"3pxqkATNUYKV/soT7qqKE0zC0BFb0pBz1pk4xXcSHsI=")
},
"transaction" : {
"parameters" : {
"txnNumber" : Long(1),
"autocommit" : false,
"readConcern" : {
"level" : "snapshot"
}
},
"readTimestamp" : Timestamp(0, 0),
"startWallClockTime" : "2019-10-21T18:31:12.192-04:00",
"timeOpenMicros" : Long(24137008),
"timeActiveMicros" : Long(52),
"timeInactiveMicros" : Long(24136956),
"expiryTime" : "2019-10-21T18:32:12.192-04:00"
},
"waitingForLock" : false,
"active" : false,
"locks" : {
"ReplicationStateTransition" : "w",
"Global" : "w",
"Database" : "w",
"Collection" : "w"
},
"lockStats" : {
"ReplicationStateTransition" : {
"acquireCount" : {
"w" : Long(3)
}
},
"Global" : {
"acquireCount" : {
"r" : Long(1),
"w" : Long(1)
}
},
"Database" : {
"acquireCount" : {
"r" : Long(1),
"w" : Long(1)
}
},
"Collection" : {
"acquireCount" : {
"r" : Long(1),
"w" : Long(1)
}
},
"Mutex" : {
"acquireCount" : {
"r" : Long(6)
}
}
}
}
{
"shard" : "shardA",
"type" : "idleSession",
...
}

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.

Este ejemplo crea las siguientes etapas del pipeline que devuelven información sobre sesiones inactivas que están manteniendo bloqueos como parte de una transacción.

  • La primera etapa devuelve documentos de todas las operaciones activas y sesiones inactivas que mantienen bloqueos como parte de una transacción.

  • La segunda etapa filtra aquellos documentos relacionados con sesiones inactivas que están reteniendo bloqueos como parte de una transacción.

Luego, el ejemplo ejecuta la siguiente pipeline de agregación:

const db = client.db("admin");
const pipeline = [
{
$currentOp: {
allUsers: true,
idleSessions: true
}
},
{
$match: {
active: false,
transaction: { $exists: true }
}
}
];
const cursor = db.aggregate(pipeline);
return cursor;

Puedes usar $currentOp.type para especificar un filtro equivalente en la $match etapa:

const db = client.db("admin");
const pipeline = [
{
$currentOp: {
allUsers: true,
idleSessions: true
}
},
{ $match: { type: "idleSession" } }
];
const cursor = db.aggregate(pipeline);
return cursor;

Este ejemplo crea las siguientes etapas para devolver información sobre el muestreo de query.

  • La primera etapa devuelve documentos para todas las operaciones activas.

  • La segunda etapa filtra 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;

Cada documento de salida puede contener un subconjunto de los siguientes campos según sea relevante para la operación:

$currentOp.type

Nuevo en la versión 4.2.

El tipo de operación. Los valores son:

  • op

  • idleSession

  • idleCursor

Si el $currentOp.type está op, $currentOp.op proporciona detalles sobre la operación específica.

$currentOp.host

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

$currentOp.shard

El nombre de la partición en el que se está ejecutando la operación.

Solo presente para clústeres fragmentados.

$currentOp.desc

Una descripción de la operación.

$currentOp.connectionId

Un identificador para la conexión donde se originó la operación específica.

$currentOp.client

La dirección IP (o el nombre de host) y el puerto efímero de la conexión del cliente en donde se origina la operación.

Para transacciones multi-documento, $currentOp.client almacena información sobre el cliente más reciente que ejecutó una operación dentro de la transacción.

Solo para autónomos y sets de réplicas

$currentOp.client_s

La dirección IP (o nombre del host) y el puerto efímero del mongos donde se origina la operación.

Solo para clústeres fragmentados

$currentOp.clientMetadata

Información adicional del cliente.

Para transacciones multi-documento, $currentOp.client almacena información sobre el cliente más reciente que ejecutó una operación dentro de la transacción.

$currentOp.appName

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

$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, una sesión inactiva o un hilo interno que actualmente está inactivo. Una operación puede estar activa incluso si la operación ha cedido a otra operación.

$currentOp.twoPhaseCommitCoordinator

Información sobre cualquiera de los siguientes:

El siguiente ejemplo filtra solo las métricas de coordinación de commits:

db.getSiblingDB("admin").aggregate( [
{ $currentOp: { allUsers: true, idleSessions: true } },
{ $match: { desc: "transaction coordinator" } }
] )

Una operación de coordinación de envíos específica (es decir, type es op y desc es "TransactionCoordinator") gestado por el coordinador de transacciones.

Nota

$currentOp.twoPhaseCommitCoordinator.lsid

El identificador de sesión para la transacción multipartición.

La combinación de lsid y txnNumber identifica la transacción.

Disponible tanto para las métricas de coordinación de confirmaciones como para operaciones de coordinación específicas.

$currentOp.twoPhaseCommitCoordinator.txnNumber

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

La combinación de txnNumber y lsid identifica la transacción.

Disponible tanto para las métricas de coordinación de confirmaciones como para operaciones de coordinación específicas.

$currentOp.twoPhaseCommitCoordinator.action

La operación específica de coordinación de confirmación originada por el coordinador de transacciones:

  • "sendingPrepare"

  • "sendingCommit"

  • "sendingAbort"

  • "writingParticipantList"

  • "writingDecision"

  • "deletingCoordinatorDoc"

Solo disponible para operación de coordinación específica.

$currentOp.twoPhaseCommitCoordinator.startTime

La fecha y hora de inicio del action.

Solo disponible para operación de coordinación específica.

$currentOp.twoPhaseCommitCoordinator.numParticipants

Número de particiones que participan en este commit.

Solo está disponible para las métricas de coordinación de commits.

$currentOp.twoPhaseCommitCoordinator.state

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

Paso/etapa
Descripción

inactive

No forma parte activamente de una commit.

writingParticipantList

Registrando un registro local de la lista de particiones que forman parte de esta transacción multi-partición.

waitingForVotes

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

writingDecision

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

waitingForDecisionAck

Esperando que los participantes reconozcan la decisión del coordinador de confirmar o cancelar.

deletingCoordinatorDoc

Borrando el registro local de la decisión de confirmación.

Solo está disponible para las métricas de coordinación de commits.

Ver también $currentOp.twoPhaseCommitCoordinator.stepDurations.

$currentOp.twoPhaseCommitCoordinator.commitStartTime

La fecha y hora en que comenzó el commit.

Solo está disponible para las métricas de coordinación de commits.

$currentOp.twoPhaseCommitCoordinator.hasRecoveredFromFailover

Un booleano que indica si la coordinación de confirmaciones se reinició debido a un cambio de respaldo en la partición que coordina la confirmación.

Si hasRecoveredFromFailover es verdadero, entonces los tiempos especificados en $currentOp.twoPhaseCommitCoordinator.stepDurations pueden no ser precisos para todos los pasos.

Solo está disponible para las métricas de coordinación de commits.

$currentOp.twoPhaseCommitCoordinator.stepDurations

Un documento que contiene la duración, en microsegundos, de la steps/state completada o en curso del proceso en activo, así como la duración total acumulada; por ejemplo:

"stepDurations" : {
"writingParticipantListMicros" : Long(17801),
"totalCommitDurationMicros" : Long(42488463),
"waitingForVotesMicros" : Long(30378502),
"writingDecisionMicros" : Long(15015),
"waitingForDecisionAcksMicros" : Long(12077145),
"deletingCoordinatorDocMicros" : Long(6009)
},

Si $currentOp.twoPhaseCommitCoordinator.hasRecoveredFromFailover es verdadero, entonces los tiempos especificados en stepDurations pueden no ser precisos para todos los pasos.

Para un coordinador en un estado inactive, el documento está vacío:

"stepDurations" : {
}

Solo está disponible para las métricas de coordinación de commits.

Se puede consultar $currentOp.twoPhaseCommitCoordinator.state.

$currentOp.twoPhaseCommitCoordinator.decision

Un documento que contiene la decisión de confirmación/cancelación, 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"
}
}

Solo está disponible para las métricas de coordinación de commits.

$currentOp.twoPhaseCommitCoordinator.deadline

La fecha y hora en que el compromiso debe finalizar.

Solo está disponible para las métricas de coordinación de commits.

$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

Un arreglo que contiene un documento para cada usuario que esté falseando identidad como el effectiveUser(s) para la operación. El documento runBy contiene el nombre de user y la autenticación db. En general, el usuario que suplanta es el usuario __system; por ejemplo.

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

Nuevo en la versión 4.2.

$currentOp.opid

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

La duración de la operación en segundos. MongoDB calcula este valor restando la hora de inicio de la operación de la hora actual.

Solo está presente si la operación se está ejecutando; es decir, si active está true.

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

Solo se presenta si la operación está en marcha; es decir, si active está true.

$currentOp.lsid

El identificador de sesión.

Solo se presenta si la operación está asociada a una sesión.

$currentOp.transaction

Un documento que contiene información sobre una transacción multi-documento.

Solo se presenta si la operación es parte de una transacción:

  • En un set de réplicas.

  • En un clúster fragmentado si $currentOp se ejecuta sin localOps:true. La información de la transacción es por partición.

  • En un clúster particionado si $currentOp se ejecuta con localOps:true. La información de la transacción es una vista compuesta en lugar de por partición.

$currentOp.transaction.parameters

Un documento que contiene información sobre transacción multi-documento.

Solo está presente si la operación forma parte de una transacción multidocumento.

$currentOp.transaction.parameters.txnNumber

El número de transacción.

Solo está presente si la operación forma parte de una transacción multidocumento.

$currentOp.transaction.parameters.autocommit

Una bandera booleana que indica si autocommit está activado para la transacción.

Solo está presente si la operación forma parte de una transacción multidocumento.

$currentOp.transaction.parameters.readConcern

El nivel de consistencia de lectura para la transacción.

Las transacciones multi-documento admiten el nivel de consistencia de lectura "snapshot", "local" y "majority".

Solo está presente si la operación forma parte de una transacción multidocumento.

$currentOp.transaction.globalReadTimestamp

La marca de tiempo de la instantánea leída por las operaciones en la transacción de clúster particionado que utiliza "preocupación de lectura de instantánea". Para las transacciones en clústeres particionados, el nivel de consistencia de lectura "snapshot" de los datos se sincroniza entre las particiones; es decir, otros niveles de consistencia de lectura no pueden garantizar que los datos sean de la misma vista de snapshot en todas las particiones.

Solo está presente cuando se ejecuta con localOps: true para transacciones de clúster particionadas.

$currentOp.transaction.readTimestamp

La marca de tiempo del snapshot que leen las operaciones en esta transacción

Solo se presenta si la operación forma parte de una transacción multi-documento. Sin embargo, el campo no se devuelve si:

En su lugar, se devuelve $currentOp.transaction.globalReadTimestamp.

$currentOp.transaction.startWallClockTime

La fecha y hora (con zona horaria) del inicio de la transacción.

Solo está presente si la operación forma parte de una transacción multidocumento.

$currentOp.transaction.timeOpenMicros

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

El timeActiveMicros valor añadido al timeInactiveMicros debe ser igual al timeOpenMicros.

Solo está presente si la operación forma parte de una transacción multidocumento.

$currentOp.transaction.timeActiveMicros

La cantidad total de tiempo que la transacción ha estado activa; es decir, cuando la transacción tenía operaciones en ejecución.

El timeActiveMicros valor añadido al timeInactiveMicros debe ser igual al timeOpenMicros.

Solo está presente si la operación forma parte de una transacción multidocumento.

$currentOp.transaction.timeInactiveMicros

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

El timeInactiveMicros valor añadido al timeActiveMicros debe ser igual al timeOpenMicros.

Solo está presente si la operación forma parte de una transacción multidocumento.

$currentOp.transaction.numParticipants

Número de particiones que participan en esta transacción.

Solo está presente si la operación forma parte de una transacción en un clúster particionado y $currentOp se ejecuta con localOps: true

$currentOp.transaction.participants

Un arreglo de documentos que detallan los shards participantes en esta transacción. Cada documento contiene el nombre, una bandera que indica si la partición actúa como coordinador de confirmación, y una bandera que indica si la partición solo está involucrado en operaciones de lectura de la transacción.

{
"name" : "shardA",
"coordinator" : false,
"readOnly" : false
}

Solo está presente si la operación forma parte de una transacción en un clúster particionado y $currentOp se ejecuta con localOps: true

$currentOp.transaction.numReadOnlyParticipants

Número de particiones solo afectados por operaciones de lectura en esta transacción.

Solo está presente si la operación forma parte de una transacción en un clúster particionado y $currentOp se ejecuta con localOps: true

$currentOp.transaction.numNonReadOnlyParticipants

Número de particiones afectadas por operaciones distintas a las de lectura en esta transacción.

Solo está presente si la operación forma parte de una transacción en un clúster particionado y $currentOp se ejecuta con localOps: true

$currentOp.transaction.expiryTime

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

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

Para obtener más información, consulte Límite de tiempo de ejecución para las transacciones.

Solo está presente si la operación forma parte de una transacción multidocumento.

$currentOp.op

Una string que identifica el tipo de operación específico. Solo se presenta si $currentOp.type es op.

Los valores posibles son:

  • "none"

  • "update"

  • "insert"

  • "query"

  • "command"

  • "getmore"

  • "remove"

  • "killcursors"

"command" las operaciones incluyen la mayoría de los comandos como createIndexes, aggregate y findAndModify.

"query" las operaciones incluyen operaciones find y operaciones OP_QUERY.

$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 find operación en una colección llamada items en una base de datos llamada test:

"command" : {
"find" : "items",
"filter" : {
"sku" : 1403978
},
...
"$db" : "test"
}

El siguiente resultado de ejemplo contiene el objeto de comando para una operación getMore generado por un comando con ID de cursor 19234103609 en una colección llamada items en una base de datos llamada test:

"command" : {
"getMore" : Long("19234103609"),
"collection" : "items",
"batchSize" : 10,
...
"$db" : "test"
},

Si el documento de comando supera 1 kilobyte, el documento tiene la siguiente forma:

"command" : {
"$truncated": <string>,
"comment": <string>
}

El campo $truncated contiene un resumen en forma de string del documento, excluyendo el campo comment del documento si está presente. Si el resumen sigue superando 1 kilobyte, se trunca aún más, indicado por una elipsis (...) al final de la string.

El campo comment está presente si se pasó un comentario a la operación. Se puede adjuntar un comentario a cualquier comando de base de datos.

$currentOp.cursor

Nuevo en la versión 4.2.

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

Si se informa sobre una operación de getmore antes de que getmore haya accedido a su información de cursor, el campo cursor no estará 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.

Si el cursor está en uso activo (es decir, op es getmore y el type no es idleCursor), entonces lastAccessDate se informa bien el tiempo en que terminó el getmore anterior o el tiempo en que se creó el cursor si este es el primer getmore.

$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 cumulativo de lotes que devuelve el cursor.

$currentOp.cursor.noCursorTimeout

Nuevo en la versión 4.2.

La bandera que indica que el cursor no se agotará por inactividad; es decir, si el cursor tiene activada la opción noTimeout.

  • Si es cierto, el cursor no agota el tiempo cuando está inactivo.

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

$currentOp.cursor.tailable

Nuevo en la versión 4.2.

La bandera que indica si el cursor es un cursor con seguimiento para una colección con tamaño fijo. Los cursores con seguimiento permanecen abiertos después de que el cliente agota los resultados en el cursor inicial.

$currentOp.cursor.awaitData

Nuevo en la versión 4.2.

El indicador que señala si el cursor con seguimiento debe bloquear temporalmente un comando getMore en el cursor mientras espera nuevos datos en lugar de devolver ningún dato.

Para los cursores sin seguimiento, el valor siempre es false.

$currentOp.cursor.originatingCommand

Nuevo en la versión 4.2.

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

Nota

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

$currentOp.cursor.planSummary

Nuevo en la versión 4.2.

Una string que 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 especificaciones del índice utilizado.

No está disponible cuando se ejecuta con localOps: true en mongos o al hacer reporte en idleCursors.

$currentOp.cursor.operationUsingCursorId

Nuevo en la versión 4.2.

El opid de la operación usando el cursor.

Solo se muestra si el cursor no está inactivo.

$currentOp.planSummary

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

No disponible al ejecutarse con localOps: true en mongos.

$currentOp.prepareReadConflicts

El número de veces que la operación actual tuvo que esperar a que una transacción preparada con un guardado se confirmara o abortara.

Mientras espera, la operación sigue manteniendo cualquier bloqueo necesario y recursos del motor de almacenamiento.

Nuevo en la versión 4.2.

$currentOp.writeConflicts

El número de veces que la operación actual entró en conflicto con otra operación de guardar en el mismo documento.

Nuevo en la versión 4.2.

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

Por lo general, las operaciones ceden cuando necesitan acceder a datos que MongoDB aún no ha leído completamente en la memoria. Esto permite que otras operaciones que tienen datos en memoria se completen rápidamente mientras MongoDB lee los datos de la operación de ceder recursos.

$currentOp.dataThroughputLastSecond

Cantidad de datos (en MiB) procesados por la operación validate en el último segundo. Solo disponible para una validate operación que actualmente 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 validate. Solo disponible para una validate operación que actualmente 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.waitingForLatch

El documento waitingForLatch solo está disponible si la operación está esperando adquirir una primitiva de bloqueo interna (también conocida como latch) o si se cumple una condición interna.

Por ejemplo,

"waitingForLatch" : {
"timestamp" : ISODate("2020-03-19T23:25:58.412Z"),
"captureName" : "FutureResolution",
"backtrace" : [ ] // Only if backtrace: true
},
Campo de salida
Descripción

Marca de tiempo

La fecha y hora en que la operación comenzó a esperar.

captureName

El nombre interno de la sección donde se encuentra actualmente bloqueada la operación.

backtrace

El stack de llamadas, si está disponible. El campo solo se incluye si backtrace: true.

$currentOp.locks

El documento locks informa el tipo y el modo de bloqueos que la operación mantiene actualmente. Los posibles tipos de bloqueo son los 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.lockStats

Para cada tipo y modo de bloqueo (ver locks para descripciones de tipos y modos de bloqueo), devuelve la siguiente información:

$currentOp.lockStats.acquireCount

Cantidad de veces que la operación adquirió el bloqueo en el modo especificado.

$currentOp.lockStats.acquireWaitCount

Cantidad de veces que la operación tuvo que esperar para la adquisición de bloqueos acquireCount porque los bloqueos se mantenían en una moda conflictiva. acquireWaitCount es menor o igual que acquireCount.

$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 mutuos al esperar la adquisición de bloqueos.

$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 msg proporciona un mensaje que describe el estado y el progreso de la operación. En el caso de las operaciones de indexación o mapReduce, el campo informa el porcentaje de finalización.

$currentOp.progress

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

$currentOp.progress.done

Informa el número de elementos de trabajo completados.

$currentOp.progress.total

Informa el número total de elementos de trabajo.

$currentOp.killPending

Devuelve true si la operación está actualmente marcada para su finalización. Cuando la operación encuentre su siguiente punto seguro de terminación, la operación terminará.

$currentOp.waitingForFlowControl

Un valor booleano que indica si la operación tuvo que esperar debido al 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-sharding actual. El tiempo se establece en 0 cuando comienza una nueva operación de rehashing.

Solo está presente si se está realizando una operación de re-asignación de particiones.

Nuevo en la versión 5.0.

$currentOp.remainingOperationTimeEstimated

El tiempo estimado restante, en segundos, para la operación de redistribución de particiones en curso. El tiempo se establece en -1 cuando se inicia una nueva operación de redistribución de particiones.

Solo está presente cuando se está realizando una operación de reparto.

Nuevo en la versión 5.0.

$currentOp.approxDocumentsToCopy

El número aproximado de documentos que se copiarán desde las particiones donantes a las particiones destinatarias durante la operación de reasignación de particiones. Este número es una estimación que se establece al inicio de la operación de resharding y no cambia una vez que se haya establecido. El número se establece en 0 cuando comienza una nueva operación de redistribución de datos. Es posible que $currentOp.documentsCopied y $currentOp.bytesCopied acaben superando a $currentOp.approxDocumentsToCopy y $currentOp.approxBytesToCopy, respectivamente, si la distribución de datos posterior a la redistribución de particiones 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

La cantidad de documentos copiados desde particiones donantes a particiones receptoras durante la operación de refragmentación. El número se establece en 0 cuando se inicia una nueva operación de cambio de partición.

Solo está presente en una partición receptora cuando se está realizando una operación de redistribución de particiones.

Nuevo en la versión 5.0.

$currentOp.approxBytesToCopy

El número aproximado de bytes que se copiarán de las particiones donantes a las particiones receptoras durante la operación de reshardeo. Esta cifra es una estimación que se establece al inicio de la operación de reconfiguración y que no cambia después de haber sido definida. El número se establece en 0 cuando inicia una nueva operación de redistribución de shards. Es posible que $currentOp.documentsCopied y $currentOp.bytesCopied terminen superando $currentOp.approxDocumentsToCopy y $currentOp.approxBytesToCopy, respectivamente, si la distribución de datos posterior a la redistribución no es perfectamente uniforme.

Solo está presente en una partición receptora cuando se está realizando una operación de redistribución de particiones.

Nuevo en la versión 5.0.

$currentOp.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

El tiempo total transcurrido, en segundos, para las tareas en curso de copia de datos desde las particiones donantes a las particiones receptoras para la operación de redistribución actual. El tiempo se establece en 0 cuando comienza una nueva operación de reasignació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.oplogEntriesFetched

El número de entradas obtenidas del oplog para la operación de reestructuración actual. El número se pone a 0 cuando comienza una nueva operación de redistribución de datos.

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 aplicar de la operación de redistribución actual. En el paso de aplicación, los fragmentos receptores aplican entradas de oplog para modificar sus datos basándose en nuevas escrituras entrantes de fragmentos donantes. El tiempo se ajusta a 0 cuando se inicia una nueva operación de redistribución.

Solo está presente en una partición receptora cuando se está realizando una operación de redistribución de particiones.

Nuevo en la versión 5.0.

$currentOp.countWritesDuringCriticalSection

El número de guardados realizados en la sección crítica para la operación de resegmentación actual. La sección crítica impide nuevas escrituras entrantes en la colección que se está redistribuyendo actualmente. El número se establece en 0 cuando comienza una nueva operación de redistribución de particiones.

Solo está presente en una partición donante cuando se está llevando a cabo una operación de reconstrucción de particiones.

Nuevo en la versión 5.0.

$currentOp.totalCriticalSectionTimeElapsed

El tiempo total transcurrido, en segundos, para la sección crítica de la operación de resharding actual. La sección crítica impide nuevas escrituras entrantes en la colección que está siendo redistribuida actualmente. El tiempo se establece en 0 cuando inicia una nueva operación de redistribución de datos.

Solo está presente en una partición donante cuando se está llevando a cabo una operación de reconstrucción de particiones.

Nuevo en la versión 5.0.

$currentOp.donorState

El estado actual de una partición donante para la operación de nueva partición. El estado se establece en unused cuando se inicia una nueva operación de re-shard.

Solo está presente en una partición donante cuando se está llevando a cabo una operación de reconstrucción de particiones.

Estado
Descripción

unused

La operación de recrisprado está a punto de comenzar o recuperarse de un traspaso primario.

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 una partición receptora para una operación de redistribución de particiones. El estado se establece en unused cuando se inicia una nueva operación de re-shard.

Solo está presente en una partición donante cuando se está llevando a cabo una operación de reconstrucción de particiones.

Estado
Descripción

unused

La operación de recrisprado está a punto de comenzar o recuperarse de un traspaso primario.

awaiting-fetch-timestamp

La partición receptora está esperando que las particiones donantes estén preparadas 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 produjo un error durante la operación de cambio de partición.

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 recrisprado está a punto de comenzar o recuperarse de un traspaso primario.

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 lo temporal
    colección de resegmentación.
  • ha insertado entradas en config.chunks para rangos basados en el
    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 resharding.

Solo presente si se está realizando una operación de reconfiguración. Una vez que la operación se haya completado, se eliminará la operación de la salida currentOp.

Estado
Descripción

actively running

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

success

La operación de resharding ha tenido éxito.

failure

La operación de redistribución de particiones ha fallado.

canceled

La operación de refactorización fue cancelada.

Nuevo en la versión 5.0.

Volver

$count

En esta página