- Reference >
- Database Commands >
- Administration Commands >
- currentOp
currentOp¶
On this page
Definition¶
Behavior¶
currentOp must run against the admin database, and
it can accept several optional fields.
| Field | Description |
|---|---|
"$ownOps" |
Boolean. If set to On New in version 3.2.9. |
"$all" |
Boolean. If set to
|
| <filter> | Specify filter conditions on the Output Fields. See Examples. |
currentOp and the
database profiler report the same
basic diagnostic information for all CRUD operations, including the
following:
aggregatecountdeletedistinctfind(OP_QUERY andcommand)findAndModifygeoNeargetMore(OP_GET_MORE andcommand)groupinsertmapReduceupdate
These operations are also included in the logging of
slow queries (see slowOpThresholdMs for
more information about slow query logging).
Access Control¶
On systems running with authorization, the user
must have access that includes the inprog privilege
action.
Examples¶
The following examples use the currentOp command with
various query documents to filter the output.
Display All Current Operations¶
Write Operations Waiting for a Lock¶
The following example returns information on all write operations that are waiting for a lock:
Active Operations with no Yields¶
The following example returns information on all active running operations that have never yielded:
Active Operations on a Specific Database¶
The following example returns information on all active operations for
database db1 that have been running longer than 3 seconds:
Active Indexing Operations¶
The following example returns information on index creation operations:
Output Example¶
- Standalone
- Replica Set (Primary)
- Sharded Cluster (mongos)
Output Fields¶
-
currentOp.desc¶ A description of the client. This string includes the
connectionId.
-
currentOp.threadId¶ An identifier for the thread that handles the operation and its connection.
-
currentOp.connectionId¶ An identifier for the connection where the operation originated.
-
currentOp.client¶ A string with information about where the operation originated.
-
currentOp.appName¶ A string with information about the type of client which made the request.
-
currentOp.opid¶ The identifier for the operation. You can pass this value to
db.killOp()in themongoshell to terminate the operation.Warning
Terminate running operations with extreme caution. Only use
db.killOp()to terminate operations initiated by clients and do not terminate internal database operations.
-
currentOp.active¶ A boolean value specifying whether the operation has started. Value is
trueif the operation has started orfalseif the operation is idle, such as an idle connection or an internal thread that is currently idle. An operation can be active even if the operation has yielded to another operation.Changed in version 3.0: For some inactive background threads, such as an inactive
signalProcessingThread, MongoDB suppresses various empty fields.
-
currentOp.secs_running¶ The duration of the operation in seconds. MongoDB calculates this value by subtracting the current time from the start time of the operation.
Only appears if the operation is running; i.e. if
activeistrue.
-
currentOp.microsecs_running¶ New in version 2.6.
The duration of the operation in microseconds. MongoDB calculates this value by subtracting the current time from the start time of the operation.
Only appears if the operation is running; i.e. if
activeistrue.
-
currentOp.op¶ A string that identifies the type of operation. The possible values are:
"none""update""insert""query""command""getmore""remove""killcursors"
"query"operations include read operations."command"operations include most commands such as thecreateIndexesandfindandmodify.Changed in version 3.0: Write operations that use the
insert,update, anddeletecommands respectively display"insert","update", and"remove"forop. Previous versions include these write commands under"query"operations.Changed in version 3.2: Most commands including
createIndexesandfindandmodifydisplay"command"forop. Previous versions of MongoDB included these commands under"query"operations.
-
currentOp.ns¶ The namespace the operation targets. A namespace consists of the database name and the collection name concatenated with a dot (
.); that is,"<database>.<collection>".
-
currentOp.insert¶ Contains the document to be inserted for operations with
opvalue of"insert". Only appears for operations withopvalue"insert".Insert operations such as
db.collection.insert()that use theinsertcommand will haveopvalue of"query".
-
currentOp.query¶ A document containing information on operations whose
opvalue is not"insert". For instance, for adb.collection.find()operation, thequerycontains the query predicate.querydoes not appear foropof"insert".querycan also be an empty document.For
"update"or"remove"operations or for read operations categorized under"query", thequerydocument contains the query predicate for the operations.Changed in version 3.0.4: For
"getmore"operations on cursors returned from adb.collection.find()or adb.collection.aggregate(), thequeryfield contains respectively the query predicate or the issuedaggregatecommand document. For details on theaggregatecommand document, see theaggregatereference page.For other commands categorized under
"query",querycontains the issued command document. Refer to the specific command reference page for the details on the command document.
-
currentOp.planSummary¶ A string that contains the query plan to help debug slow queries.
-
currentOp.client¶ The IP address (or hostname) and the ephemeral port of the client connection where the operation originates. If your
inprogarray has operations from many different clients, use this string to relate operations to clients.
-
currentOp.appName¶ New in version 3.4.
The identifier of the client application which ran the operation. If the operation was run in the MongoDB shell, the appName is always
"MongoDB Shell". If the operation originated from a driver,appNamemay be set to a custom string.
-
currentOp.locks¶ Changed in version 3.0.
The
locksdocument reports the type and mode of locks the operation currently holds. The possible lock types are as follows:Lock Type Description GlobalRepresents global lock. MMAPV1JournalRepresents MMAPv1 storage engine specific lock to synchronize journal writes; for non-MMAPv1 storage engines, the mode for MMAPV1Journalis empty.DatabaseRepresents database lock. CollectionRepresents collection lock. MetadataRepresents metadata lock. oplogRepresents lock on the oplog. The possible modes are as follows:
Lock Mode Description RRepresents Shared (S) lock. WRepresents Exclusive (X) lock. rRepresents Intent Shared (IS) lock. wRepresents Intent Exclusive (IX) lock.
-
currentOp.waitingForLock¶ Returns a boolean value.
waitingForLockistrueif the operation is waiting for a lock andfalseif the operation has the required lock.
-
currentOp.msg¶ The
msgprovides a message that describes the status and progress of the operation. In the case of indexing or mapReduce operations, the field reports the completion percentage.
-
currentOp.progress¶ Reports on the progress of mapReduce or indexing operations. The
progressfields corresponds to the completion percentage in themsgfield. Theprogressspecifies the following information:-
currentOp.progress.done¶ Reports the number completed.
-
currentOp.progress.total¶ Reports the total number.
-
-
currentOp.killPending¶ Returns
trueif the operation is currently flagged for termination. When the operation encounters its next safe termination point, the operation will terminate.
-
currentOp.numYields¶ numYieldsis a counter that reports the number of times the operation has yielded to allow other operations to complete.Typically, operations yield when they need access to data that MongoDB has not yet fully read into memory. This allows other operations that have data in memory to complete quickly while MongoDB reads in data for the yielding operation.
-
currentOp.fsyncLock¶ Specifies if database is currently locked for
fsync write/snapshot.Only appears if locked; i.e. if
fsyncLockistrue.
-
currentOp.info¶ Information regarding how to unlock database from
db.fsyncLock(). Only appears iffsyncLockistrue.
-
currentOp.lockStats¶ For each lock type and mode (see
currentOp.locksfor descriptions of lock types and modes), returns the following information:-
currentOp.lockStats.acquireCount¶ Number of times the operation acquired the lock in the specified mode.
-
currentOp.lockStats.acquireWaitCount¶ Number of times the operation had to wait for the
acquireCountlock acquisitions because the locks were held in a conflicting mode.acquireWaitCountis less than or equal toacquireCount.
-
currentOp.lockStats.timeAcquiringMicros¶ Cumulative time in microseconds that the operation had to wait to acquire the locks.
timeAcquiringMicrosdivided byacquireWaitCountgives an approximate average wait time for the particular lock mode.
-
currentOp.lockStats.deadlockCount¶ Number of times the operation encountered deadlocks while waiting for lock acquisitions.
-