Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
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 o inactivas, así como sesiones inactivas que mantienen bloqueos como parte de una transacción. La etapa devuelve un documento por cada operación o sesión. Para ejecutar, utilice $currentOp el db.aggregate() asistente en la base de datos admin.

La etapa de agregación$currentOpse prefiere al comandocurrentOpy su método auxiliarmongoshdb.currentOp(). Dado que el comandocurrentOpy el método auxiliardb.currentOp()devuelven los resultados en un solo documento, el tamaño total del conjunto de resultadoscurrentOpestá sujeto al límite máximo de tamaño BSON de 16MB para documentos. La etapa$currentOpdevuelve un cursor sobre un flujo de documentos, cada uno de los cuales informa una sola operación. Cada documento de operación está sujeto al límite de BSON de 16MB, pero a diferencia del comandocurrentOp, no hay límite en el tamaño total del conjunto de resultados.

$currentOp También le 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 true en, $currentOp informará las operaciones que pertenecen 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 establece true en, informará sobre los cursores que están "inactivos"; $currentOp getMore es decir, abiertos pero no activos actualmente en una operación.

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 se establece true en, además de las operaciones activas/inactivas, $currentOp informará sobre:

    • Sesiones inactivas que mantienen bloqueos como parte de una transacción. Cada sesión inactiva aparecerá como un documento independiente 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 establecido "idleSession" en.

    • $currentOp.twoPhaseCommitCoordinator in inactive state

  • Si se establece false en, no informará$currentOp 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 waitingForLatch campo de salida.

Se establece por defecto en false.

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

  • Las canalizaciones que comienzan con solo se pueden ejecutar en la base de $currentOp datos.admin

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

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

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

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

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

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

Tip

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

Ambas operaciones devuelven documentos de la siguiente forma:

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

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

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

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

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

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

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

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 para todas las operaciones activas y sesiones inactivas que mantienen bloqueos como parte de una transacción.

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

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

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

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

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

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

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

  • La segunda etapa filtra los documentos relacionados con el analizador de consultas.

const db = client.db("admin");
const pipeline = [
{
$currentOp: {
allUsers: true,
localOps: true
}
},
{ $match: { desc: "query analyzer" } }
];
const cursor = db.aggregate(pipeline);
return cursor;

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 $currentOp.type opes, proporciona detalles sobre la operación$currentOp.op 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 únicamente las métricas de coordinación de confirmaciones:

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

Una operación de coordinación de confirmación específica (es decir, type es op desc y "TransactionCoordinator" es) generada 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 identifica la txnNumber 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 identifica la lsid 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"

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

$currentOp.twoPhaseCommitCoordinator.startTime

La fecha y hora de inicio del action.

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

$currentOp.twoPhaseCommitCoordinator.numParticipants

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

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 confirmación.

Paso/etapa
Descripción

inactive

No forma parte activamente de una 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 confirmar o cancelar.

deletingCoordinatorDoc

Eliminar 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 es verdadero, entonces hasRecoveredFromFailover $currentOp.twoPhaseCommitCoordinator.stepDurations los tiempos especificados en pueden no ser precisos para todos los pasos.

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

$currentOp.twoPhaseCommitCoordinator.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 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" : {
}

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

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. 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.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 está presente 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.

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 fragmentado, si $currentOp se ejecuta con localOps:true, la información de la transacción es una vista compuesta, no por fragmento.

$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

Marca de tiempo de la instantánea leída por las operaciones en la transacción del clúster fragmentado que utiliza la preocupación de lectura "instantánea". En las transacciones en clústeres fragmentados, la preocupación "snapshot" de lectura de los datos se sincroniza entre los fragmentos; es decir, otras preocupaciones de lectura no pueden garantizar que los datos provengan de la misma vista de instantánea en todos los fragmentos.

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

$currentOp.transaction.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) de 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 valortimeActiveMicrosagregado altimeInactiveMicrosdebe ser igual atimeOpenMicros.

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, cuándo la transacción tuvo operaciones en ejecución.

El valortimeActiveMicrosagregado altimeInactiveMicrosdebe ser igual atimeOpenMicros.

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 tuvo operaciones en ejecución.

El valortimeInactiveMicrosagregado altimeActiveMicrosdebe ser igual atimeOpenMicros.

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 es parte de una transacción en un clúster fragmentado y se ejecuta $currentOp con localOps: verdadero

$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 es parte de una transacción en un clúster fragmentado y se ejecuta $currentOp con localOps: verdadero

$currentOp.transaction.numReadOnlyParticipants

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

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

$currentOp.transaction.numNonReadOnlyParticipants

Número de fragmentos afectados por operaciones distintas a las lecturas en esta transacción.

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

$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 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, createIndexesaggregatecomo,findAndModify y.

"query" Las operaciones incluyen operaciones y operaciones find 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 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 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 creó originalmente 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 especificación del índice utilizado.

No disponible cuando se ejecuta con localOps: true en o cuando se mongos informa idleCursors en.

$currentOp.cursor.operationUsingCursorId

Nuevo en la versión 4.2.

El opid de la operación que utiliza 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 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.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

fecha y hora

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

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

Tiempo total transcurrido, en segundos, para la operación de refragmentación actual. El tiempo se establece en 0 cuando se inicia una nueva operación de refragmentación.

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

Nuevo en la versión 5.0.

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

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

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 en 0 cuando se inicia una nueva operación de reorganización.

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

Nuevo en la versión 5.0.

$currentOp.oplogEntriesFetched

Número de entradas extraídas del registro de operaciones para la operación de refragmentación actual. El número se establece en 0 cuando se inicia una nueva operación de refragmentación.

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

Nuevo en la versión 5.0.

$currentOp.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 repartición actual. Esta sección impide nuevas escrituras entrantes en la colección que se está repartiendo. El tiempo se establece en 0 cuando se inicia una nueva operación de repartición.

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

Nuevo en la versión 5.0.

$currentOp.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 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 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 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 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 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 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 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 refragmentación ha fallado.

canceled

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

Nuevo en la versión 5.0.

Volver

$count

En esta página