db.currentOp()
On this page本页内容
Definition定义
db.currentOp()
-
Returns a document that contains information on in-progress operations for the database instance.返回一个文档,该文档包含有关数据库实例正在进行的操作的信息。Thedb.currentOp()
method wraps the database commandcurrentOp
.db.currentOp()
方法包装数据库命令currentOp
。Use the请使用$currentOp
aggregation stage instead of thecurrentOp
command and itsmongosh
helper methoddb.currentOp()
.$currentOp
聚合阶段,而不是currentOp
命令及其mongosh
助手方法db.currentOp()
。NoteStarting in MongoDB 5.0, the从MongoDB 5.0开始,当使用$currentOp
aggregation stage is used when running the helper methoddb.currentOp()
withmongosh
.mongosh
运行助手方法db.currentOp()
时,将使用$currentOp
聚合阶段。Given this, in the 5.0 version of the shell and with mongosh,考虑到这一点,在5.0版本的shell和db.currentOp()
result sets are not subject to the 16MB BSON document return size document return size limit for documents of the previous legacymongo
versions.mongosh
中,db.currentOp()
结果集不受先前遗留mongo版本文档的16MB BSON文档返回大小文档返回大小限制。
Syntax语法
db.currentOp()
has the following form:具有以下形式:
db.currentOp(<operations>)
db.currentOp()
can take the following optional argument:可以采用以下可选参数:
operations | boolean or document |
Behavior行为
db.currentOp()
can accept a filter document or a boolean parameter.可以接受筛选文档或布尔参数。
If you pass a filter document to 如果将筛选器文档传递给db.currentOp()
, the output returns information only for the current operations that match the filter. db.currentOp()
,则输出仅返回与筛选器匹配的当前操作的信息。The filter document can contain:筛选文档可以包含:
"$ownOps" | true , returns information on the current user's operations only.true ,则仅返回有关当前用户操作的信息。mongod instances, users can always run db.currentOp( { "$ownOps": true } ) to view their own operations. mongod 实例上,用户总是可以运行db.currentOp( { "$ownOps": true } ) 来查看自己的操作 |
"$all" | true , returns information on all operations, including operations on idle connections and system operations.true ,则返回所有操作的信息,包括空闲连接上的操作和系统操作。"$all": true along with Output Fields conditions, only the "$all":true applies. "$all": true :true 以及输出字段条件,则仅适用"$all":true 。 |
<filter> | "$all": true along with Output Fields conditions, only the "$all": true applies. "$all": true 以及输出字段条件,则仅适用"$all": true 。 |
Passing in 将true
to db.currentOp()
is equivalent to passing in a document of { "$all": true }
. The following operations are equivalent:true
传递给db.currentOp()
相当于传递{ "$all": true }
的文档。以下操作等效:
db.currentOp(true)
db.currentOp( { "$all": true } )
db.currentOp()
and the database profiler report the same basic diagnostic information for all CRUD operations, including the following:和数据库探查器为所有CRUD操作报告相同的基本诊断信息,包括以下信息:
aggregate
count
delete
distinct
find
(OP_QUERYand和command
)findAndModify
getMore
(OP_GET_MOREand和command
)insert
mapReduce
update
These operations are also included in the logging of slow queries (see 这些操作也包含在慢速查询的日志记录中(有关慢速查询日志记录的更多信息,请参阅slowOpThresholdMs
for more information about slow query logging).slowOpThresholdMs
)。
Access Control访问控制
On systems running with 在使用authorization
, the user must have access that includes the inprog
privilege action.authorization
运行的系统上,用户必须具有包括inprog
权限操作的访问权限。
Users can run 用户可以在db.currentOp( { "$ownOps": true } )
on mongod
instances to view their own operations even without the inprog
privilege action.mongod
实例上运行db.currentOp( { "$ownOps": true } )
来查看自己的操作,即使没有inprog
权限操作。
See also: 另请参阅:
Examples实例
The following examples use the 以下示例将db.currentOp()
method with various query documents to filter the output.db.currentOp()
方法与各种查询文档一起使用来筛选输出。
Write Operations Waiting for a Lock等待锁定的写入操作
The following example returns information on all write operations that are waiting for a lock:以下示例返回有关正在等待锁定的所有写入操作的信息:
db.currentOp(
{
"waitingForLock" : true,
$or: [
{ "op" : { "$in" : [ "insert", "update", "remove" ] } },
{ "command.findandmodify": { $exists: true } }
]
}
)
Active Operations with no Yields无收益的主动操作
The following example returns information on all active running operations that have never yielded:以下示例返回所有从未产生结果的活动运行操作的信息:
db.currentOp(
{
"active" : true,
"numYields" : 0,
"waitingForLock" : false
}
)
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:db1
中运行时间超过3秒的所有活动操作的信息:
db.currentOp(
{
"active" : true,
"secs_running" : { "$gt" : 3 },
"ns" : /^db1\./
}
)
Active Indexing Operations活动索引操作
The following example returns information on index creation operations:以下示例返回有关索引创建操作的信息:
db.adminCommand(
{
currentOp: true,
$or: [
{ op: "command", "command.createIndexes": { $exists: true } },
{ op: "none", "msg" : /^Index Build/ }
]
}
)
Output Example输出示例
The following is a prototype of 以下是db.currentOp()
output.db.currentOp()
输出的原型。
The following is a prototype of the 以下是在单机上运行时currentOp
output when run on a standalone:currentOp
输出的原型:
Changed in version 4.24.2版更改.
{
"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" : <NumberLong()>,
"microsecs_running" : <number>,
"op" : <string>,
"ns" : <string>,
"command" : <document>,
"queryFramework" : <string>,
"planSummary": <string>,
"cursor" : { // only for getMore operations
"cursorId" : <NumberLong()>,
"createdDate" : <ISODate()>,
"lastAccessDate" : <ISODate()>,
"nDocsReturned" : <NumberLong()>,
"nBatchesReturned" : <NumberLong()>,
"noCursorTimeout" : <boolean>,
"tailable" : <boolean>,
"awaitData" : <boolean>,
"originatingCommand" : <document>,
"planSummary" : <string>,
"operationUsingCursorId" : <NumberLong()>
},
"msg": <string>,
"progress" : {
"done" : <number>,
"total" : <number>
},
"killPending" : <boolean>,
"numYields" : <number>,
"dataThroughputLastSecond" : <number>, // Starting in MongoDB 4.4 for validate operations
"dataThroughputAverage" : <number>, // Starting in MongoDB 4.4 for validate operations
"waitingForLatch" : { // Starting in MongoDB 4.2.2
"timestamp" : <ISODate()>,
"captureName" : <string>
},
"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" : NumberLong(0),
"w" : NumberLong(0),
"R" : NumberLong(0),
"W" : NumberLong(0)
},
"deadlockCount" : {
"r" : NumberLong(0),
"w" : NumberLong(0),
"R" : NumberLong(0),
"W" : NumberLong(0)
}
},
"ReplicationStateTransition" : {
...
},
"Global": {
...
},
"Database" : {
...
},
...
}
},
...
],
"fsyncLock": <boolean>,
"info": <string>,
"ok": <num>
}
The following is a prototype of the 以下是在副本集的主副本上运行时currentOp
output when run on a primary of a replica set:currentOp
输出的原型:
Changed in version 4.24.2版更改.
{
"inprog": [
{
"type" : <string>,
"host" : <string>,
"desc" : <string>,
"connectionId" : <number>,
"client" : <string>,
"appName" : <string>,
"clientMetadata" : <document>,
"lsid" : {
"id" : <UUID>,
"uid" : <BinData>
},
"transaction" : {
"parameters" : {
"txnNumber" : <NumberLong()>,
"autocommit" : <boolean>,
"readConcern" : {
"level" : <string>
}
},
"readTimestamp" : <Timestamp>,
"startWallClockTime" : <string>,
"timeOpenMicros" : <NumberLong()>,
"timeActiveMicros" : <NumberLong()>,
"timeInactiveMicros" : <NumberLong()>,
"expiryTime" : <string>,
},
"active" : <boolean>,
"currentOpTime" : <string>,
"effectiveUsers" : [
{
"user" : <string>,
"db" : <string>
}
],
"opid" : <number>,
"secs_running" : <NumberLong()>,
"microsecs_running" : <number>,
"op" : <string>,
"ns" : <string>,
"command" : <document>,
"originatingCommand" : <document>,
"queryFramework" : <string>,
"planSummary": <string>,
"prepareReadConflicts" : <NumberLong()>,
"writeConflicts" : <NumberLong()>,
"cursor" : { // only for getMore operations
"cursorId" : <NumberLong()>,
"createdDate" : <ISODate()>,
"lastAccessDate" : <ISODate()>,
"nDocsReturned" : <NumberLong()>,
"nBatchesReturned" : <NumberLong()>,
"noCursorTimeout" : <boolean>,
"tailable" : <boolean>,
"awaitData" : <boolean>,
"originatingCommand" : <document>,
"planSummary" : <string>,
"operationUsingCursorId" : <NumberLong()>
},
"msg": <string>,
"progress" : {
"done" : <number>,
"total" : <number>
},
"killPending" : <boolean>,
"numYields" : <number>,
"dataThroughputLastSecond" : <number>, // Starting in MongoDB 4.4 for validate operations
"dataThroughputAverage" : <number>, // Starting in MongoDB 4.4 for validate operations
"waitingForLatch" : { // Starting in MongoDB 4.2.2
"timestamp" : <ISODate()>,
"captureName" : <string>
},
"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" : NumberLong(0),
"w" : NumberLong(0),
"R" : NumberLong(0),
"W" : NumberLong(0)
},
"deadlockCount" : {
"r" : NumberLong(0),
"w" : NumberLong(0),
"R" : NumberLong(0),
"W" : NumberLong(0)
}
},
"ReplicationStateTransition" : {
...
},
"Global" : {
...
},
"Database" : {
...
},
...
}
},
...
],
"fsyncLock": <boolean>,
"info": <string>,
"ok": <num>,
"operationTime": <timestamp>,
"$clusterTime": <document>
}
The following is an example of the 以下是在分片集群的currentOp
output when run on a mongos
of a sharded cluster (Fields may vary depending on the operation being reported):mongos
上运行时currentOp
输出的示例(字段可能因报告的操作而异):
Changed in version 4.2.4.2版更改。
{
"inprog": [
{
"shard": <string>,
"type" : <string>,
"host" : <string>,
"desc" : <string>,
"connectionId" : <number>,
"client_s" : <string>,
"appName" : <string>,
"clientMetadata" : <document>,
"lsid" : {
"id" : <UUID>,
"uid" : <BinData>
},
"transaction" : {
"parameters" : {
"txnNumber" : <NumberLong()>,
"autocommit" : <boolean>,
"readConcern" : {
"level" : <string>
}
},
"readTimestamp" : <Timestamp>,
"startWallClockTime" : <string>,
"timeOpenMicros" : <NumberLong()>,
"timeActiveMicros" : <NumberLong()>,
"timeInactiveMicros" : <NumberLong()>,
"expiryTime" : <string>,
},
"active" : <boolean>,
"currentOpTime" : <string>,
"effectiveUsers" : [
{
"user" : <string>,
"db" : <string>
}
],
"runBy" : [
{
"user" : <string>,
"db" : <string>
}
],
"twoPhaseCommitCoordinator" : { // Starting in 4.2.1
"lsid" : {
"id" : <UUID>,
"uid" : <BinData>
},
"txnNumber" : <NumberLong>,
"numParticipants" : <NumberLong>,
"state" : <string>,
"commitStartTime" : <ISODate>,
"hasRecoveredFromFailover" : <boolean>,
"stepDurations" : <document>,
"decision" : <document>,
"deadline" : <ISODate>
}
"opid" : <string>,
"secs_running" : <NumberLong()>,
"microsecs_running" : <number>,
"op" : <string>,
"ns" : <string>,
"command" : <document>,
"configTime" : <Timestamp>, // Starting in 5.0
"topologyTime" : <Timestamp>, // Starting in 5.0
"queryFramework" : <string>, // Starting in 6.2
"planSummary": <string>,
"prepareReadConflicts" : <NumberLong()>,
"writeConflicts" : <NumberLong()>,
"cursor" : { // only for getMore operations
"cursorId" : <NumberLong()>,
"createdDate" : <ISODate()>,
"lastAccessDate" : <ISODate()>,
"nDocsReturned" : <NumberLong()>,
"nBatchesReturned" : <NumberLong()>,
"noCursorTimeout" : <boolean>,
"tailable" : <boolean>,
"awaitData" : <boolean>,
"originatingCommand" : <document>,
"planSummary" : <string>,
"operationUsingCursorId" : <NumberLong()>
},
"msg": <string>,
"progress" : {
"done" : <number>,
"total" : <number>
},
"killPending" : <boolean>,
"numYields" : <number>,
"dataThroughputLastSecond" : <number>, // Starting in MongoDB 4.4 for validate operations
"dataThroughputAverage" : <number>, // Starting in MongoDB 4.4 for validate operations
"waitingForLatch" : { // Starting in MongoDB 4.2.2
"timestamp" : <ISODate()>,
"captureName" : <string>
},
"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" : NumberLong(0),
"w" : NumberLong(0),
"R" : NumberLong(0),
"W" : NumberLong(0)
},
"deadlockCount" : {
"r" : NumberLong(0),
"w" : NumberLong(0),
"R" : NumberLong(0),
"W" : NumberLong(0)
}
},
"ReplicationStateTransition" : {
...
},
"Global" : {
...
},
"Database" : {
...
},
...
}
},
...
],
"ok": <num>,
"operationTime": <timestamp>,
"$clusterTime": <document>
}
Specific Output Examples具体输出示例
These output samples illustrate 这些输出样本说明了特定操作的currentOp
output for particular operations. currentOp
输出。The fields that make up the actual output vary depending on the server's role.构成实际输出的字段因服务器的角色而异。
Resharding Output Example重新硬化输出示例
{
type: "op",
desc: "Resharding{Donor, Recipient, Coordinator}Service <reshardingUUID>",
op: "command",
ns: "<database>.<collection>",
originatingCommand: {
reshardCollection: "<database>.<collection>",
key: <shardkey>,
unique: <boolean>,
collation: {locale: "simple"},
// Other options to the reshardCollection command are omitted
// to decrease the likelihood the output is truncated.
},
{donor, coordinator, recipient}State : "<service state>",
approxDocumentsToCopy: NumberLong(<count>),
approxBytesToCopy: NumberLong(<count>),
bytesCopied: NumberLong(<count>),
countWritesToStashCollections: NumberLong(<count>),
countWritesDuringCriticalSection : NumberLong(<count>),
countReadsDuringCriticalSection: NumberLong(<count>),
deletesApplied: NumberLong(<count>),
documentsCopied: NumberLong(<count>),
insertsApplied: NumberLong(<count>),
oplogEntriesFetched: NumberLong(<count>),
oplogEntriesApplied: NumberLong(<count>),
remainingOperationTimeEstimatedSecs: NumberLong(<count>),
allShardsLowestRemainingOperationTimeEstimatedSecs: NumberLong(<estimate>),
allShardsHighestRemainingOperationTimeEstimatedSecs: NumberLong(<estimate>),
totalApplyTimeElapsedSecs: NumberLong(<count>),
totalCopyTimeElapsedSecs: NumberLong(<count>),
totalCriticalSectionTimeElapsedSecs : NumberLong(<count>),
totalOperationTimeElapsedSecs: NumberLong(<count>),
updatesApplied: NumberLong(<count>),
}
Global Index Example全局索引示例
{
type: "op",
desc: "GlobalIndex{Donor, Recipient, Coordinator}Service <globalIndexUUID}",
op: "command",
ns: "<database>.<collection>",
originatingCommand: {
createIndexes: "<database>.<collection>",
key: <indexkeypattern>,
unique: <boolean>,
<Additional createIndexes options>
},
{donor, coordinator, recipient}State : "<service state>",
approxDocumentsToScan: NumberLong(<count>),
approxBytesToScan: NumberLong(<count>),
bytesWrittenFromScan: NumberLong(<count>),
countWritesToStashCollections: NumberLong(<count>),
countWritesDuringCriticalSection : NumberLong(<count>),
countReadsDuringCriticalSection: NumberLong(<count>),
keysWrittenFromScan: NumberLong(<count>),
remainingOperationTimeEstimatedSecs: NumberLong(<count>),
allShardsLowestRemainingOperationTimeEstimatedSecs: NumberLong(<estimate>),
allShardsHighestRemainingOperationTimeEstimatedSecs: NumberLong(<estimate>),
totalCopyTimeElapsedSecs: NumberLong(<count>),
totalCriticalSectionTimeElapsedSecs : NumberLong(<count>),
totalOperationTimeElapsedSecs: NumberLong(<count>),
}
Output Fields输出字段
For a complete list of 有关db.currentOp()
output fields, see currentOp.db.currentOp()
输出字段的完整列表,请参阅currentOp
。