Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

db.currentOp() (método mongosh)

db.currentOp()

Importante

Recomendamos utilizar la etapa de agregación $currentOp en lugar del comando currentOp (obsoleto con la versión 6.2) y el método db.currentOp().

Devuelve un documento que contiene información sobre las operaciones en curso para la instancia de la base de datos. El método db.currentOp() encapsula el comando de base de datos currentOp.

Nota

A partir de MongoDB 5.0, la etapa de agregación $currentOp se utiliza al ejecutar el método auxiliar db.currentOp() con mongosh.

Dado esto, en la versión 5.0 del shell y con mongosh, los conjuntos de resultadosdb.currentOp() no están sujetos al límite de tamaño de devolución de documento BSON 16MB para documentos de las versiones heredadas anteriores mongo.

Este método está disponible en implementaciones alojadas en los siguientes entornos:

  • MongoDB Atlas: El servicio totalmente administrado para implementaciones de MongoDB en la nube.

Importante

Este comando no es compatible con los clústeres M0 y Flex. Para obtener más información, consulte Comandos no compatibles.

  • MongoDB Enterprise: La versión basada en suscripción y autogestionada de MongoDB

  • MongoDB Community: La versión de MongoDB con código fuente disponible, de uso gratuito y autogestionada.

db.currentOp() tiene la siguiente forma:

db.currentOp(<operations>)

db.currentOp() puede aceptar el siguiente argumento opcional:

Parameter
Tipo
Descripción

booleano o documento

Opcional. Especifica las operaciones sobre las que se informa. Puede pasar un booleano o un documento:

  • Se puede especificar true para incluir operaciones en conexiones inactivas y operaciones del sistema.

  • Especifique un documento con condiciones de consulta para generar informes únicamente sobre las operaciones que coincidan con dichas condiciones. Consulte la sección Comportamiento para obtener más detalles.

db.currentOp() puede aceptar un documento de filtro o un parámetro booleano.

Si se pasa un documento de filtro a db.currentOp(), la salida devuelve información solo para las operaciones actuales que coinciden con el filtro. El documento de filtro puede contener:

Campo
Descripción

"$ownOps"

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

En la instancia mongod, los usuarios siempre pueden ejecutar db.currentOp( { "$ownOps": true } ) para ver sus propias operaciones.

"$all"

Booleano. Si se establece en true, devuelve información sobre todas las operaciones, incluidas las operaciones en conexiones inactivas y operaciones del sistema. Puede obtener más información en $currentOp (etapa de agregación).

Si el documento incluye "$all": true junto con las condiciones de los campos de salida, solo se aplica "$all":true.

<filter>

Especifique las condiciones de filtrado en los campos de salida. Consulte los ejemplos.

Si el documento incluye "$all": true junto con las condiciones de los campos de salida, solo se aplica "$all": true.

Pasar true a db.currentOp() es equivalente a pasar un documento de { "$all": true }. Las siguientes operaciones son equivalentes:

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

db.currentOp() y el generador de perfiles de la base de datos informan la misma información de diagnóstico básica para todas las operaciones CRUD, incluyendo lo siguiente:

Estas operaciones también se incluyen en el registro de las query lentas. Consulta slowOpThresholdMs para obtener más información sobre el registro de query lentas.

En los sistemas que se ejecutan con authorization, se debe tener acceso que incluya la acción de privilegio inprog.

Los usuarios pueden ejecutar db.currentOp( { "$ownOps": true } ) en instancias mongod para ver sus propias operaciones incluso sin la acción de privilegio inprog.

Los siguientes ejemplos utilizan el método db.currentOp() con varios documentos de consulta para filtrar la salida.

El siguiente ejemplo devuelve información sobre todas las operaciones de guardar que están esperando un bloqueo:

db.currentOp(
{
"waitingForLock" : true,
$or: [
{ "op" : { "$in" : [ "insert", "update", "remove" ] } },
{ "command.findandmodify": { $exists: true } }
]
}
)

El siguiente ejemplo devuelve información sobre todas las operaciones en ejecución activas que nunca han dado resultados:

db.currentOp(
{
"active" : true,
"numYields" : 0,
"waitingForLock" : false
}
)

El siguiente ejemplo devuelve información sobre todas las operaciones activas para la base de datos db1 que se han estado ejecutando más de 3 segundos:

db.currentOp(
{
"active" : true,
"secs_running" : { "$gt" : 3 },
"ns" : /^db1\./
}
)

El siguiente ejemplo devuelve información sobre las operaciones de creación de índices en cualquier número de campos:

db.getSiblingDB("admin").aggregate( [
{ $currentOp : { idleConnections: true } },
{ $match: {
$or: [
{ "op": "command", "command.createIndexes": { $exists: true } },
{ "op": "none", "msg": /^Index Build/ }
]
}
}
] )

Nota

Las operaciones de indexación activas no se aplican a la creación de índices continuos.

El siguiente es un prototipo de la salida de db.currentOp().

A continuación se muestra un prototipo del currentOp cuando se ejecuta en modo autónomo:

{
"inprog": [
{
"type" : <string>,
"host" : <string>,
"desc" : <string>,
"connectionId" : <number>,
"client" : <string>,
"appName" : <string>,
"clientMetadata" : <document>,
"active" : <boolean>,
"currentOpTime" : <string>,
"effectiveUsers" : [
{
"user" : <string>,
"db" : <string>
}
],
"opid" : <number>,
"lsid" : {
"id" : <UUID>,
"uid" : <BinData>
},
"secs_running" : <Long()>,
"microsecs_running" : <number>,
"op" : <string>,
"ns" : <string>,
"command" : <document>,
"queryFramework" : <string>,
"planSummary": <string>,
"inUseTrackedMemBytes": <Long()>, // Starting in 8.3
"peakTrackedMemBytes": <Long()>, // Starting in 8.3
"cursor" : { // only for getMore operations
"cursorId" : <Long()>,
"createdDate" : <ISODate()>,
"lastAccessDate" : <ISODate()>,
"nDocsReturned" : <Long()>,
"nBatchesReturned" : <Long()>,
"noCursorTimeout" : <boolean>,
"tailable" : <boolean>,
"awaitData" : <boolean>,
"originatingCommand" : <document>,
"planSummary" : <string>,
"operationUsingCursorId" : <Long()>
},
"msg": <string>,
"progress" : {
"done" : <number>,
"total" : <number>
},
"killPending" : <boolean>,
"numYields" : <number>,
"dataThroughputLastSecond" : <number>,
"dataThroughputAverage" : <number>,
"locks" : {
"ParallelBatchWriterMode" : <string>,
"ReplicationStateTransition" : <string>,
"Global" : <string>,
"Database" : <string>,
"Collection" : <string>,
"Metadata" : <string>,
"oplog" : <string>
},
"waitingForLock" : <boolean>,
"lockStats" : {
"ParallelBatchWriterMode" : {
"acquireCount": {
"r": <NumberLong>,
"w": <NumberLong>,
"R": <NumberLong>,
"W": <NumberLong>
},
"acquireWaitCount": {
"r": <NumberLong>,
"w": <NumberLong>,
"R": <NumberLong>,
"W": <NumberLong>
},
"timeAcquiringMicros" : {
"r" : Long(0),
"w" : Long(0),
"R" : Long(0),
"W" : Long(0)
},
"deadlockCount" : {
"r" : Long(0),
"w" : Long(0),
"R" : Long(0),
"W" : Long(0)
}
},
"ReplicationStateTransition" : {
...
},
"Global": {
...
},
"Database" : {
...
},
...
}
},
...
],
"fsyncLock": <boolean>,
"info": <string>,
"ok": <num>
}

Estas muestras de resultados ilustran la salida currentOp para operaciones concretas. Los campos que componen la salida real varían según el rol del servidor.

{
shard: '<string>',
totalCopyTimeElapsedSecs: Long('<count>'),
totalApplyTimeElapsedSecs: Long('<count>'),
totalCriticalSectionTimeElapsedSecs: Long('<count>'),
totalIndexBuildTimeElapsedSecs: Long('<count>'),
indexesToBuild: Long('<count>'),
indexesBuilt: Long('<count>'),
oplogEntriesFetched: Long('<count>'),
oplogEntriesApplied: Long('<count>'),
insertsApplied: Long('<count>'),
updatesApplied: Long('<count>'),
deletesApplied: Long('<count>'),
type: 'op',
desc: 'ReshardingMetrics{Donor|Recipient|Coordinator}Service <reshardingUUID>',
op: 'command',
ns: '<database>.<collection>',
originatingCommand: {
reshardCollection: '<database>.<collection>',
key: '<shardkey>',
unique:'<boolean>',
collation: { locale: 'simple' }
},
totalOperationTimeElapsedSecs: Long('<count>'),
recipientState: '<service state>',
remainingOperationTimeEstimatedSecs: Long('<count>'),
approxDocumentsToCopy: Long('<count>'),
approxBytesToCopy: Long('<count>'),
bytesCopied: Long('<count>'),
countWritesToStashCollections: Long('<count>'),
documentsCopied: Long('<count>'),
provenance: 'reshardCollection'
}

Para obtener una lista completa de los campos de salida de db.currentOp(), consulte currentOp.