- Reference >
- Database Commands >
- Administration Commands >
- currentOp
currentOp¶
On this page
Definition¶
-
currentOp
¶ Returns a document that contains information on in-progress operations for the
mongod
instance.currentOp
has the following form:The
mongo
shell provides thedb.currentOp()
wrapper for thecurrentOp
command.Note
Because
currentOp
command anddb.currentOp()
helper returns the results in a single document, the total size of thecurrentOp
result set is subject to the maximum 16MB BSON size limit for documents.Starting in version 3.6, MongoDB provides
$currentOp
aggregation stage. The$currentOp
stage returns a cursor over a stream of documents, each of which reports a single operation. Each operation document is subject to the 16MB BSON limit, but unlike thecurrentOp
command, there is no limit on the overall size of the result set.For this reason, the
$currentOp
aggregation stage is preferred over thecurrentOp
command and itsmongo
shell helperdb.currentOp()
.
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:
aggregate
count
delete
distinct
find
(OP_QUERY andcommand
)findAndModify
geoNear
getMore
(OP_GET_MORE andcommand
)group
insert
mapReduce
update
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.
Starting in 3.2.9, users can use
$ownOps
on mongod
instances to view their own
operations without 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:
Changed in version 3.6.
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¶
Changed in version 3.6.
The following example returns information on index creation operations:
Output Example¶
- Standalone
- Replica Set (Primary)
- Sharded Cluster (mongos)
Output Fields¶
-
currentOp.
host
¶ The name of the host against which the operation is run.
-
currentOp.
desc
¶ A description of the client. This string includes the
connectionId
.
-
currentOp.
connectionId
¶ An identifier for the connection where the operation originated.
-
currentOp.
client
¶ A string with information about where the operation originated.
For multi-document transactions,
client
stores information about the most recent client to run an operation inside the transaction.
-
currentOp.
appName
¶ A string with information about the type of client which made the request.
-
currentOp.
clientMetadata
¶ Additional information on the client.
For multi-document transactions,
client
stores information about the most recent client to run an operation inside the transaction.
-
currentOp.
currentOpTime
¶ The start time of the operation.
New in version 3.6.
-
currentOp.
lsid
¶ The session identifier.
Only present if the operation is associated with a session.
New in version 3.6.
-
currentOp.
transaction
¶ A document that contains multi-document transaction information.
Only present if the operation is part of a transaction.
New in version 4.0.
-
currentOp.transaction.
parameters
¶ A document that contains information on multi-document transaction.
Only present if the operation is part of a transaction.
New in version 4.0.
-
currentOp.transaction.parameters.
txnNumber
¶ The transaction number.
Only present if the operation is part of a transaction.
New in version 4.0.
-
currentOp.transaction.parameters.
autocommit
¶ A boolean flag that indicates if autocommit is on for the transaction.
Only present if the operation is part of a transaction.
New in version 4.0.2.
-
currentOp.transaction.parameters.
readConcern
¶ The read concern for the transaction.
Multi-document transactions support read concern
"snapshot"
,"local"
, and"majority"
.Only present if the operation is part of a transaction.
New in version 4.0.2.
-
currentOp.transaction.
readTimestamp
¶ The timestamp of the snapshot being read by the operations in the transaction.
Only present if the operation is part of a transaction.
New in version 4.0.2.
-
currentOp.transaction.
startWallClockTime
¶ The date and time (with time zone) of the transaction start.
Only present if the operation is part of a transaction.
New in version 4.0.2.
-
currentOp.transaction.
timeOpenMicros
¶ The duration of the transaction in microseconds.
The
timeActiveMicros
value added to thetimeInactiveMicros
should equal thetimeOpenMicros
.Only present if the operation is part of a transaction.
New in version 4.0.2.
-
currentOp.transaction.
timeActiveMicros
¶ The total amount of time that the transaction has been active; i.e. when the transaction had operations running.
The
timeActiveMicros
value added to thetimeInactiveMicros
should equal thetimeOpenMicros
.Only present if the operation is part of a transaction.
New in version 4.0.2.
-
currentOp.transaction.
timeInactiveMicros
¶ The total amount of time that the transaction has been inactive; i.e. when the transaction had no operations running.
The
timeInactiveMicros
value added to thetimeActiveMicros
should equal thetimeOpenMicros
.Only present if the operation is part of a transaction.
-
currentOp.transaction.
expiryTime
¶ The date and time (with time zone) when the transaction will time out and abort.
The
currentOp.transaction.expiryTime
equals thecurrentOp.transaction.startWallClockTime
+ thetransactionLifetimeLimitSeconds
.For more information, seee Runtime Limit for transactions.
Only present if the operation is part of a transaction.
New in version 4.0.2.
-
-
-
currentOp.
opid
¶ The identifier for the operation. You can pass this value to
db.killOp()
in themongo
shell 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
true
if the operation has started orfalse
if 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
active
istrue
.
-
currentOp.
microsecs_running
¶ 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
active
istrue
.
-
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 thecreateIndexes
andfindandmodify
.
-
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.
command
¶ Changed in version 3.6.
A document containing the full command object associated with this operation. If the command document exceeds 1 kilobyte, the document has the following form:
The
$truncated
field contains a string summary of the document excluding the document’scomment
field if present. If the summary still exceeds 1 kilobyte then it is further truncated, denoted by an ellipsis (…) at the end of the string.The
comment
field is present if a comment was passed to the operation.The following example output contains the command object for a
find
operation on a collection nameditems
in a database namedtest
:The following example output contains the command object for a
getMore
operation generated by a command with cursor id80336119321
on a collection nameditems
in a database namedtest
:
-
currentOp.
originatingCommand
¶ Changed in version 3.6: For
"getmore"
operations which retrieve the next batch of results from a cursor, theoriginatingCommand
field contains the full command object (e.g.find
oraggregate
) which originally created that cursor.
-
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
inprog
array 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. Use the
appName
connection string option to set a custom value for theappName
field.
-
currentOp.
locks
¶ Changed in version 3.0.
The
locks
document reports the type and mode of locks the operation currently holds. The possible lock types are as follows:Lock Type Description Global
Represents global lock. MMAPV1Journal
Represents MMAPv1 storage engine specific lock to synchronize journal writes; for non-MMAPv1 storage engines, the mode for MMAPV1Journal
is empty.Database
Represents database lock. Collection
Represents collection lock. Metadata
Represents metadata lock. oplog
Represents lock on the oplog. The possible modes are as follows:
Lock Mode Description R
Represents Shared (S) lock. W
Represents Exclusive (X) lock. r
Represents Intent Shared (IS) lock. w
Represents Intent Exclusive (IX) lock.
-
currentOp.
waitingForLock
¶ Returns a boolean value.
waitingForLock
istrue
if the operation is waiting for a lock andfalse
if the operation has the required lock.
-
currentOp.
msg
¶ The
msg
provides 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
progress
fields corresponds to the completion percentage in themsg
field. Theprogress
specifies the following information:-
currentOp.progress.
done
¶ Reports the number completed.
-
currentOp.progress.
total
¶ Reports the total number.
-
-
currentOp.
killPending
¶ Returns
true
if the operation is currently flagged for termination. When the operation encounters its next safe termination point, the operation will terminate.
-
currentOp.
numYields
¶ numYields
is 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
fsyncLock
istrue
.
-
currentOp.
info
¶ Information regarding how to unlock database from
db.fsyncLock()
. Only appears iffsyncLock
istrue
.
-
currentOp.
lockStats
¶ For each lock type and mode (see
currentOp.locks
for 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
acquireCount
lock acquisitions because the locks were held in a conflicting mode.acquireWaitCount
is less than or equal toacquireCount
.
-
currentOp.lockStats.
timeAcquiringMicros
¶ Cumulative time in microseconds that the operation had to wait to acquire the locks.
timeAcquiringMicros
divided byacquireWaitCount
gives 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.
-