Definition定义
$currentOpReturns a stream of documents containing information on active and/or dormant operations as well as inactive sessions that are holding locks as part of a transaction. The stage returns a document for each operation or session.返回一系列文档,其中包含有关活动和/或休眠操作以及作为事务一部分持有锁的非活动会话的信息。该阶段为每个操作或会话返回一个文档。To run要运行$currentOp, use thedb.aggregate()helper on theadmindatabase.$currentOp,请使用管理数据库上的db.aggregate()帮助程序。The$currentOpaggregation stage is preferred over thecurrentOpcommand and itsmongoshhelper methoddb.currentOp().$currentOp聚合阶段优于currentOp命令及其mongosh辅助方法db.currentOp()。Because the因为currentOpcommand anddb.currentOp()helper method return the results in a single document, the total size of thecurrentOpresult set is subject to the maximum 16MB BSON size limit for documents.currentOp命令和db.currentOp()辅助方法在单个文档中返回结果,所以currentOp结果集的总大小受文档最大16MB BSON大小限制的约束。The$currentOpstage 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 thecurrentOpcommand, there is no limit on the overall size of the result set.$currentOp阶段在文档流上返回一个游标,每个文档流都报告一个操作。每个操作文档都受16MB BSON限制,但与currentOp命令不同,对结果集的总体大小没有限制。$currentOpalso enables you to perform arbitrary transformations of the results as the documents pass through the pipeline.还使您能够在文档通过管道时对结果执行任意转换。
Syntax语法
{ $currentOp: { allUsers: <boolean>, idleConnections: <boolean>, idleCursors: <boolean>, idleSessions: <boolean>, localOps: <boolean> } }
$currentOp takes an options document as its operand:将选项文档作为其操作数:
allUsers |
inprog privilege is required if allUsers: true.allUsers:true,则需要inprog权限。inprog privilege is required to run $currentOp.$currentOp需要inprog权限。false.false。 |
idleConnections |
|
idleCursors | true, $currentOp reports on cursors that are "idle"; i.e. open but not currently active in a getMore operation.true,$currentOp会报告“空闲”的游标;即,在getMore操作中打开但当前未处于活动状态。type set to "idleCursor".type设置为"idleCursor"。getMore operation information have the type set to "op" and op set to getmore.getMore操作信息中当前活动的游标信息的type设置为"op",op设置为getMore。false.false。 |
idleSessions |
|
localOps |
|
targetAllNodes |
|
Omitting any of the above parameters will cause $currentOp to use that parameter's default value. Specify an empty document, as shown below, to use the default values of all parameters.省略上述任何参数都会导致$currentOp使用该参数的默认值。指定一个空文档,如下所示,以使用所有参数的默认值。
{ $currentOp: { } }Constraints约束条件
Pipeline管道
$currentOpmust be the first stage in the pipeline.必须是管道中的第一阶段。Pipelines that start with以$currentOpcan only be run on theadmindatabase.$currentOp开头的管道只能在admin数据库上运行。
Access Control访问控制
For standalone and replica sets that enforce access control,对于强制访问控制的独立集和副本集,如果inprogprivilege is required to run$currentOpif allUsers: true.allUsers:true,则需要inprog权限来运行$currentOp。For sharded clusters that enforce access control, the对于实施访问控制的分片集群,运行inprogprivilege is required to run$currentOp.$currentOp需要inprog权限。
Transactions事务
事务中不允许使用$currentOpis not allowed in transactions.$currentOp。
Redaction补救措施
When using Queryable Encryption, 使用可查询加密时,$currentOp output redacts certain information:$currentOp输出会编辑某些信息:
The output omits all fields after输出省略了"command"."command"后的所有字段。The output redacts输出将"command"to include only the first element,$comment, and$db."command"编辑为仅包含第一个元素$comment和$db。
Examples示例
MongoDB Shell
Inactive Sessions非活动会话
This example creates the following stages to return information on inactive sessions that are holding locks as part of a transaction:此示例创建了以下阶段,以返回作为事务一部分持有锁的非活动会话的信息:
The first stage returns documents for all active operations as well as inactive sessions that are holding locks as part of a transaction.第一阶段返回所有活动操作以及作为事务一部分持有锁的非活动会话的文档。The second stage filters for documents related to inactive sessions that are holding locks as part of a transaction.第二阶段筛选与作为事务一部分持有锁的非活动会话相关的文档。
db.getSiblingDB("admin").aggregate( [
{ $currentOp : { allUsers: true, idleSessions: true } },
{ $match : { active: false, transaction : { $exists: true } } }
] )
You can use 您可以使用$currentOp.type to specify an equivalent filter:$currentOp.type指定等效筛选器:
db.getSiblingDB("admin").aggregate( [
{ $currentOp : { allUsers: true, idleSessions: true } },
{ $match : { type: "idleSession" } }
] )Tip
For transactions on a sharded cluster, include localOps:true in the previous examples for a composite view of the transactions.对于分片集群上的事务,在前面的示例中包含localOps:true以获得事务的复合视图。
Both operations return documents of the following form:这两个操作都返回以下形式的文档:
Replica Set副本集
When run on a 当在作为副本集一部分的mongod that is part of a replica set:mongod上运行时:
{
"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" : {},
}Sharded Cluster分片集群(localOpts:true)
Running 使用$currentOp with localOps:true provides a composite view of the in-progress transactions run on that mongos, rather than information on individual shards.localOps:true运行$currentOp,可以提供在该mongos上运行的正在进行的事务的复合视图,而不是单个分片的信息。
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
}
}
When run without localOps:true on the 在mongos, the transaction information is per shard.mongos上不使用localOps:true运行时,事务信息是按分片计算的。
Sharded Cluster分片集群
When run on a 当在没有mongos without localOps:true, the transaction information is per shard.localOps:true的mongos上运行时,事务信息是按分片的。
{
"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",
...
}Sampled Queries示例查询
This example returns information on query sampling progress.此示例返回有关查询采样进度的信息。
The first stage returns documents for all active operations.第一阶段返回所有活动操作的文档。The second stage filters for documents related to the query analyzer.第二阶段筛选与查询分析器相关的文档。
db.getSiblingDB("admin").aggregate( [
{ $currentOp: { allUsers: true, localOps: true } },
{ $match: { desc: "query analyzer" } }
] )
This pipeline returns output similar to the following:此管道返回的输出类似于以下内容:
Replica Set副本集
When run on a 当在作为副本集一部分的mongod that is part of a replica set:mongod上运行时:
{
"desc" : "query analyzer",
"ns" : "testDb.testColl",
"collUuid" : UUID("ed9dfb1d-5b7c-4c6b-82e9-b0f537335795"),
"samplesPerSecond" : 5,
"startTime" : ISODate("2023-08-08T16:23:22.846Z"),
"sampledReadsCount" : Long(2),
"sampledReadsBytes" : Long(346),
"sampledWritesCount" : Long(3),
"sampledWritesBytes" : Long(904)
}Sharded Cluster:mongos
When run on a 当在分片集群中的mongos that is part of a sharded cluster:mongos上运行时:
{
"desc" : "query analyzer",
"ns" : "testDb.testColl",
"collUuid" : UUID("5130b4df-5966-434f-85f0-f8956b5ca74e"),
"samplesPerSecond" : 5,
"startTime" : ISODate("2023-08-08T16:15:07.427Z"),
"sampledReadsCount" : Long(2),
"sampledWritesCount" : Long(3)
}Sharded Cluster:mongod --shardsvr
When run on a 当在分片集群中的mongod --shardsvr that is part of a sharded cluster:mongod --shardsvr上运行时:
{
"desc" : "query analyzer",
"ns" : "testDb.testColl",
"collUuid" : UUID("5130b4df-5966-434f-85f0-f8956b5ca74e"),
"startTime" : ISODate("2023-08-08T16:15:07.427Z"),
"sampledReadsCount" : Long(2),
"sampledReadsBytes" : Long(346),
"sampledWritesCount" : Long(3),
"sampledWritesBytes" : Long(904)
}Node.js
To use the MongoDB Node.js driver to add a 要使用MongoDB Node.js驱动程序将$currentOp stage to an aggregation pipeline, use the $currentOp operator in a pipeline object.$currentOp阶段添加到聚合管道中,请在管道对象中使用$currentOp运算符。
Inactive Sessions非活动会话
This example creates the following pipeline stages that return information on inactive sessions that are holding locks as part of a transaction.此示例创建了以下管道阶段,这些阶段返回有关作为事务一部分持有锁的非活动会话的信息。
The first stage returns documents for all active operations and inactive sessions that are holding locks as part of a transaction.第一阶段返回作为事务一部分持有锁的所有活动操作和非活动会话的文档。The second stage filters for documents related to inactive sessions that are holding locks as part of a transaction.第二阶段筛选与作为事务一部分持有锁的非活动会话相关的文档。
Then, the example runs the following aggregation pipeline:然后,该示例运行以下聚合管道:
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;
You can use 您可以使用$currentOp.type to specify an equivalent filter in the $match stage:$currentOp.type在$match阶段指定等效筛选器:
const db = client.db("admin");
const pipeline = [
{
$currentOp: {
allUsers: true,
idleSessions: true
}
},
{ $match: { type: "idleSession" } }
];
const cursor = db.aggregate(pipeline);
return cursor;Sampled Queries示例查询
This example creates the following stages to return information on query sampling.此示例创建了以下阶段来返回查询采样信息。
The first stage returns documents for all active operations.第一阶段返回所有活动操作的文档。The second stage filters for documents related to the query analyzer.第二阶段筛选与查询分析器相关的文档。
const db = client.db("admin");
const pipeline = [
{
$currentOp: {
allUsers: true,
localOps: true
}
},
{ $match: { desc: "query analyzer" } }
];
const cursor = db.aggregate(pipeline);
return cursor;Output Fields输出字段
Each output document may contain a subset of the following fields, as relevant for the operation:每个输出文档可能包含与操作相关的以下字段的子集:
$currentOp.typeThe type of operation. Values are either:操作类型。值为:opidleSessionidleCursor
If the如果$currentOp.typeisop,$currentOp.opprovides details on the specific operation.$currentOp.type是op,则$currentOpop提供有关特定操作的详细信息。
$currentOp.hostThe name of the host against which the operation is run.运行操作的主机的名称。
$currentOp.shardThe name of the shard where the operation is running.运行操作的分片的名称。Only present for sharded clusters.仅适用于分片集群。
$currentOp.descA description of the operation.操作说明。
$currentOp.connectionIdAn identifier for the connection where the specific operation originated.特定操作发起的连接的标识符。
$currentOp.clientThe IP address (or hostname) and the ephemeral port of the client connection where the operation originates.操作发起的客户端连接的IP地址(或主机名)和临时端口。For multi-document transactions,对于多文档事务,$currentOp.clientstores information about the most recent client to run an operation inside the transaction.$currentOp.client在事务中存储有关最近运行操作的客户端的信息。For standalones and replica sets only仅适用于单机版和副本集
$currentOp.client_sThe IP address (or hostname) and the ephemeral port of the操作发起的mongoswhere the operation originates.mongos的IP地址(或主机名)和临时端口。For sharded clusters only仅适用于分片集群
$currentOp.clientMetadataAdditional information on the client.关于客户的更多信息。For multi-document transactions,对于多文档事务,$currentOp.clientstores information about the most recent client to run an operation inside the transaction.$currentOpclient在事务中存储有关最近运行操作的客户端的信息。
$currentOp.appNameThe identifier of the client application which ran the operation. Use the运行操作的客户端应用程序的标识符。使用appNameconnection string option to set a custom value for theappNamefield.appName连接字符串选项为appName字段设置自定义值。
$currentOp.activeA 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, an inactive session, or an internal thread that is currently idle. An operation can be active even if the operation has yielded to another operation.true;如果操作处于空闲状态,例如空闲连接、非活动会话或当前处于空闲状态的内部线程,则该值为false。即使操作已被另一个操作所取代,该操作也可以处于活动状态。
$currentOp.twoPhaseCommitCoordinatorInformation on either:关于以下任一方面的信息:The commit coordination metrics for a transaction whose write operations span multiple shards.写操作跨越多个分片的事务的提交协调指标。Commit coordination is handled by a shard, and提交协调由分片处理,$currentOp(run either on amongosor a shard member) returns a shard's coordination information only for transactions the shard is currently coordinating.$currentOp(在mongos或分片成员上运行)仅返回分片当前正在协调的事务的分片协调信息。The following example filters for only the commit coordination metrics:以下示例仅筛选提交协调指标:db.getSiblingDB("admin").aggregate( [
{ $currentOp: { allUsers: true, idleSessions: true } },
{ $match: { desc: "transaction coordinator" } }
] )A specific commit coordination operation (i.e.事务协调器生成的特定提交协调操作(即typeisopanddescis"TransactionCoordinator") spawned by the transaction coordinator.type为op,desc为"TransactionCoordinator")。Note
If run with idleSessions: false,如果使用$currentOpdoes not return the$currentOp.twoPhaseCommitCoordinatorinformation ininactivestateidleSessions: false运行,则$currentOp不会返回处于非活动状态的$currentOptwoPhaseCommitCoordinator信息If access control is enabled and allUsers: false,如果启用了访问控制并且$currentOpdoes not return$currentOp.twoPhaseCommitCoordinatorinformation.allUsers: false,则$currentOp不会返回$currentOp.twoPhaseCommitCoordinator信息。
$currentOp.twoPhaseCommitCoordinator.lsidThe session identifier for the multi-shard transaction.多分片事务的会话标识符。The combination of thelsidandtxnNumberidentifies the transaction.lsid和txnNumber的组合标识了事务。Available for both the commit coordination metrics and for specific coordination operation.可用于提交协调度量和特定协调操作。
$currentOp.twoPhaseCommitCoordinator.txnNumberThe transaction number for the multi-shard transaction.多分片事务的事务号。The combination of thetxnNumberandlsididentifies the transaction.txnNumber和lsid的组合标识了事务。Available for both the commit coordination metrics and for specific coordination operation.可用于提交协调度量和特定协调操作。
$currentOp.twoPhaseCommitCoordinator.actionThe specific commit coordination operation spawned by the transaction coordinator:事务协调器生成的具体提交协调操作:"sendingPrepare""sendingCommit""sendingAbort""writingParticipantList""writingDecision""deletingCoordinatorDoc"
Only available for specific coordination operation.仅适用于特定的协调操作。
$currentOp.twoPhaseCommitCoordinator.startTimeThe start date and time of theaction.action的开始日期和时间。Only available for specific coordination operation.仅适用于特定的协调操作。
$currentOp.twoPhaseCommitCoordinator.numParticipantsNumber of shards participating in this commit.参与此提交的分片数量。Only available for the commit coordination metrics.仅适用于提交协调指标。
$currentOp.twoPhaseCommitCoordinator.stateThe current step/state of the commit coordination process.提交协调过程的当前步骤/状态。Step/stage步骤/阶段Description描述inactiveNot actively part of a commit.不积极参与承诺。writingParticipantListWriting a local record of the list of shards that are part of this multi-shard transaction.写入作为此多分片事务一部分的分片列表的本地记录。waitingForVotesWaiting for the participants to respond with vote to commit or abort.等待参与者投票决定是否提交或中止。writingDecisionWriting a local record of the coordinator's decision to commit or abort based on votes.根据投票结果,记录协调器决定提交或中止的本地记录。waitingForDecisionAckWaiting for participants to acknowledge the coordinator's decision to commit or abort.等待参与者确认协调器提交或中止的决定。deletingCoordinatorDocDeleting the local record of commit decision.删除提交决策的本地记录。Only available for the commit coordination metrics.仅适用于提交协调指标。See also另请参阅$currentOp.twoPhaseCommitCoordinator.stepDurations.$currentOp.twoPhaseCommitCoordinator.stepDurations。
$currentOp.twoPhaseCommitCoordinator.commitStartTimeThe date and time when the commit started.提交开始的日期和时间。Only available for the commit coordination metrics.仅适用于提交协调指标。
$currentOp.twoPhaseCommitCoordinator.hasRecoveredFromFailoverA boolean that indicates whether the commit coordination was restarted due to failover on the shard that is coordinating the commit.一个布尔值,指示是否由于协调提交的分片上的故障转移而重新启动了提交协调。If如果hasRecoveredFromFailoveris true, then the times specified in$currentOp.twoPhaseCommitCoordinator.stepDurationsmay not be accurate for all steps.hasRecoveredFromFailover为true,则$currentOp.twoPhaseCommitCoordinator.stepDurations中指定的时间可能并非对所有步骤都准确。Only available for the commit coordination metrics.仅适用于提交协调指标。
$currentOp.twoPhaseCommitCoordinator.stepDurationsA document that contains the duration, in microseconds, of the completed or in-progress包含活动进程的已完成或正在进行的步骤/状态的持续时间(以微秒为单位)以及累计总持续时间的文档;例如:steps/stateof the active process as well as the cumulative total duration; for example:"stepDurations" : {
"writingParticipantListMicros" : Long(17801),
"totalCommitDurationMicros" : Long(42488463),
"waitingForVotesMicros" : Long(30378502),
"writingDecisionMicros" : Long(15015),
"waitingForDecisionAcksMicros" : Long(12077145),
"deletingCoordinatorDocMicros" : Long(6009)
},If如果$currentOp.twoPhaseCommitCoordinator.hasRecoveredFromFailoveris true, then the times specified instepDurationsmay not be accurate for all steps.$currentOp.twoPhaseCommitCoordinator.hasRecoveredFromFailover为true,则stepDurations中指定的时间可能并非对所有步骤都准确。For a coordinator in an对于处于inactivestate, the document is empty:inactive(失活)状态的协调器,文档为空:"stepDurations" : {
}Only available for the commit coordination metrics.仅适用于提交协调指标。See参阅$currentOp.twoPhaseCommitCoordinator.state.$currentOp.twoPhaseCommitCoordinator.state。
$currentOp.twoPhaseCommitCoordinator.decisionA document that contains the commit/abort decision, for example:包含提交/中止决定的文档,例如:For a commit decision:对于提交决定:
"decision" : {
"decision" : "commit",
"commitTimestamp" : Timestamp(1572034669, 3)
}For an abort decision:对于中止决定:
"decision" : {
"decision" : "abort",
"abortStatus" : {
"code" : 282,
"codeName" : "TransactionCoordinatorReachedAbortDecision",
"errmsg" : "Transaction exceeded deadline"
}
}Only available for the commit coordination metrics.仅适用于提交协调指标。
$currentOp.twoPhaseCommitCoordinator.deadlineThe date and time by which the commit must finish.提交必须完成的日期和时间。Only available for the commit coordination metrics.仅适用于提交协调指标。
$currentOp.currentOpTimeThe start time of the operation.操作的开始时间。
$currentOp.effectiveUsersAn array that contains a document for each user associated with the operation. Each user document contains the一个数组,其中包含与操作关联的每个用户的文档。每个用户文档都包含username and the authenticationdb.user名称和身份验证数据库。Tip
$currentOp.runByAn array that contains a document for each user who is impersonating the一个数组,其中包含每个模拟操作effectiveUser(s)for the operation. The runBy document contains theusername and the authenticationdb. In general, the impersonating user is the__systemuser; e.g.effectiveUser(s)(有效用户)的用户的文档。runBy文档包含用户名和身份验证数据库。一般来说,冒充用户是__system用户;如。"runBy" : [
{
"user" : "__system",
"db" : "local"
}
]
$currentOp.opidThe identifier for the operation. You can pass this value to操作的标识符。您可以将此值传递给db.killOp()inmongoshto terminate the operation.mongosh中的db.killOp()以终止操作。Warning
极其小心地终止正在运行的操作。仅使用Terminate running operations with extreme caution. Only usedb.killOp()to terminate operations initiated by clients and do not terminate internal database operations.db.killOp()终止客户端发起的操作,而不终止内部数据库操作。
$currentOp.versionContextDescribes the Feature Compatibility Version (FCV) of the operation, which the server uses to determine available features.描述操作的功能兼容性版本(FCV),服务器使用该版本确定可用功能。This information is intended for troubleshooting issues encountered while updating or downgrading a server.此信息用于排除更新或降级服务器时遇到的问题。New in version 8.2.在版本8.2中新增。
$currentOp.secs_runningThe duration of the operation in seconds. MongoDB calculates this value by subtracting the current time from the start time of the operation.操作持续时间(秒)。MongoDB通过从操作的开始时间中减去当前时间来计算此值。Only present if the operation is running; i.e. if仅在操作正在运行时存在;即,如果activeistrue.active为true。
$currentOp.microsecs_runningThe duration of the operation in microseconds. MongoDB calculates this value by subtracting the current time from the start time of the operation.操作的持续时间(微秒)。MongoDB通过从操作的开始时间中减去当前时间来计算此值。Only present if the operation is running; i.e. if仅在操作正在运行时存在;即,如果activeistrue.active为true。
$currentOp.lsidThe session identifier.会话标识符。Only present if the operation is associated with a session.仅当操作与会话关联时才显示。
$currentOp.transactionA document that contains multi-document transaction information.包含多文档事务信息的文档。Only present if the operation is part of a transaction:仅当操作是事务的一部分时才存在:On a replica set.在副本集上。On a sharded cluster if在分片集群上,如果$currentOpis run without localOps:true. The transaction information is per shard.$currentOp在没有localOps:true的情况下运行。事务信息是按分片的。On a sharded cluster if在分片集群上,如果$currentOpis run with localOps:true. The transaction information is a composite view rather than per shard.$currentOp在有localOps:true的情况下运行。事务信息是一个复合视图,而不是每个分片。
$currentOp.transaction.parametersA document that contains information on multi-document transaction.包含多文档事务信息的文档。Only present if the operation is part of a multi-document transaction.仅当操作是多文档事务的一部分时才存在。$currentOp.transaction.parameters.txnNumberThe transaction number.事务编号。Only present if the operation is part of a multi-document transaction.仅当操作是多文档事务的一部分时才存在。
$currentOp.transaction.parameters.autocommitA boolean flag that indicates if autocommit is on for the transaction.一个布尔标志,指示事务是否启用了自动提交。Only present if the operation is part of a multi-document transaction.仅当操作是多文档事务的一部分时才存在。
$currentOp.transaction.parameters.readConcernThe read concern for the transaction.事务的读取关注。Multi-document transactions support read concern多文档事务支持读取关注"snapshot","local", and"majority"."snapshot"、"local"和"majority"。Only present if the operation is part of a multi-document transaction.仅当操作是多文档事务的一部分时才存在。
$currentOp.transaction.globalReadTimestampThe timestamp of the snapshot read by the operations in the sharded cluster transaction that uses "snapshot" read concern.使用"snapshot"读取关注的分片集群事务中的操作读取的快照的时间戳。For transactions on sharded clusters, the read concern对于分片集群上的事务,数据的读取关注"snapshot"of the data is synchronized across shards; i.e. other read concerns cannot guarantee that the data is from the same snapshot view across the shards."snapshot"在分片之间同步;即,其他读取关注无法保证数据来自不同分片的同一快照视图。Only present when run with localOps: true for sharded cluster transactions.仅在对分片集群事务使用localOps: true运行时存在。
$currentOp.transaction.readTimestampThe timestamp of the snapshot being read by the operations in this transaction此事务中的操作正在读取的快照的时间戳Only present if the operation is part of a multi-document transaction. However, the field is not returned if:仅当操作是多文档事务的一部分时才存在。但是,如果出现以下情况,则不会返回该字段:the transaction is on a sharded cluster and uses "snapshot" read concern, and事务位于分片集群上,并使用"snapshot"读取关注,以及$currentOpis run with localOps: true.$currentOp与localOps: true一起运行。
Instead,相反,返回的是$currentOp.transaction.globalReadTimestampis returned.$currentOp.transaction.globalReadTimestamp。
$currentOp.transaction.startWallClockTimeThe date and time (with time zone) of the transaction start.事务开始的日期和时间(带时区)。Only present if the operation is part of a multi-document transaction.仅当操作是多文档事务的一部分时才存在。
$currentOp.transaction.timeOpenMicrosThe duration, in microseconds, for the transaction.事务的持续时间(微秒)。The
timeActiveMicrosvalue added to thetimeInactiveMicrosshould equal thetimeOpenMicros.Only present if the operation is part of a multi-document transaction.仅当操作是多文档事务的一部分时才存在。
$currentOp.transaction.timeActiveMicrosThe total amount of time that the transaction has been active; i.e. when the transaction had operations running.事务处于活动状态的总时间;即,当事务有操作运行时。The添加到timeActiveMicrosvalue added to thetimeInactiveMicrosshould equal thetimeOpenMicros.timeInactiveMicros的timeActiveMicros值应等于timeOpenMicros。Only present if the operation is part of a multi-document transaction.仅当操作是多文档事务的一部分时才存在。
$currentOp.transaction.timeInactiveMicrosThe total amount of time that the transaction has been inactive; i.e. when the transaction had no operations running.事务处于非活动状态的总时间;即,当事务没有运行任何操作时。The添加到timeInactiveMicrosvalue added to thetimeActiveMicrosshould equal thetimeOpenMicros.timeActiveMicros的timeInactiveMicros值应等于timeOpenMicros。Only present if the operation is part of a multi-document transaction.仅当操作是多文档事务的一部分时才存在。
$currentOp.transaction.numParticipantsNumber of shards participating in this transaction.参与此事务的分片数量。Only present if the operation is part of a transaction on a sharded cluster and仅当操作是分片集群上事务的一部分并且$currentOpis run with localOps: true$currentOp与localOps:true一起运行时才存在
$currentOp.transaction.participantsAn array of documents detailing the participating shards in this transaction. Each document contains the name, a flag indicating if the shard acts as the commit coordinator, and a flag indicating if the shard is only involved in read operations for the transaction.一系列详细说明此事务中参与分片的文档。每个文档都包含名称、一个指示分片是否充当提交协调器的标志,以及一个指示该分片是否仅参与事务的读取操作的标志。{
"name" : "shardA",
"coordinator" : false,
"readOnly" : false
}Only present if the operation is part of a transaction on a sharded cluster and仅当操作是分片集群上事务的一部分并且$currentOpis run with localOps: true$currentOp与localOps:true一起运行时才存在
$currentOp.transaction.numReadOnlyParticipantsNumber of shards only affected by read operations in this transaction.仅受此事务中读取操作影响的分片数量。Only present if the operation is part of a transaction on a sharded cluster and仅当操作是分片集群上事务的一部分并且$currentOpis run with localOps: true$currentOp与localOps:true一起运行时才存在
$currentOp.transaction.numNonReadOnlyParticipantsNumber of shards affected by operations other than reads in this transaction.此事务中受读取以外的操作影响的分片数。Only present if the operation is part of a transaction on a sharded cluster and仅当操作是分片集群上事务的一部分并且$currentOpis run with localOps: true$currentOp与localOps:true一起运行时才存在
$currentOp.transaction.expiryTimeThe date and time (with time zone) when the transaction will time out and abort.事务超时和中止的日期和时间(带时区)。The$currentOp.transaction.expiryTimeequals the$currentOp.transaction.startWallClockTime+ thetransactionLifetimeLimitSeconds.$currentOp.transaction.expiryTime等于$currentOp.transaction.startWallClockTime+transactionLifetimeLimitSeconds。For more information, see Runtime Limit for transactions.有关更多信息,请参阅事务的运行时限制。Only present if the operation is part of a multi-document transaction.仅当操作是多文档事务的一部分时才存在。
$currentOp.opA string that identifies the specific operation type. Only present if标识特定操作类型的字符串。仅当$currentOp.typeisop.$currentOp.type为op时才存在。The possible values are:可能的值有:"none""update""insert""query""command""getmore""remove""killcursors"
"command"operations include most commands such as thecreateIndexes,aggregate, andfindAndModify."command"操作包括大多数命令,如createIndexes、aggregate和findAndModify。"query"operations includefindoperations and OP_QUERY operations.
$currentOp.nsThe namespace the operation targets. A namespace consists of the database name and the collection name concatenated with a dot (操作所针对的命名空间。命名空间由数据库名称和集合名称与点(.); that is,"<database>.<collection>"..)连接而成;即"<database>.<collection>"。
$currentOp.commandA document containing the full command object associated with this operation.包含与此操作关联的完整命令对象的文档。For example, the following output contains the command object for a例如,以下输出包含对名为findoperation on a collection nameditemsin a database namedtest:test的数据库中名为items的集合执行find操作的命令对象:"command" : {
"find" : "items",
"filter" : {
"sku" : 1403978
},
...
"$db" : "test"
}The following example output contains the command object for a以下示例输出包含getMoreoperation generated by a command with cursor ID19234103609on a collection nameditemsin a database namedtest:getMore操作的命令对象,该操作由名为test的数据库中名为items的集合上游标ID为19234103609的命令生成:"command" : {
"getMore" : Long("19234103609"),
"collection" : "items",
"batchSize" : 10,
...
"$db" : "test"
},If the command document exceeds 1 kilobyte, the document has the following form:如果命令文档超过1千字节,则文档具有以下形式:"command" : {
"$truncated": <string>,
"comment": <string>
}The$truncatedfield contains a string summary of the document excluding the document'scommentfield if present. If the summary still exceeds 1 kilobyte then it is further truncated, denoted by an ellipsis (...) at the end of the string.$truncated字段包含文档的字符串摘要,不包括文档的注释字段(如果存在)。如果摘要仍然超过1千字节,则进一步截断,由字符串末尾的省略号(…)表示。The如果向操作传递了注释,则会出现commentfield is present if a comment was passed to the operation. A comment may be attached to any database command.comment字段。任何数据库命令都可以附加注释。
$currentOp.cursorA document that contains the cursor information for包含idleCursorandgetmoreoperations; i.e. wheretypeisidleCursororopisgetmore.idleCursor和getmore操作的游标信息的文档;即,其中type是idleCursor或op是getmore。If reporting on a如果在getmoreoperation before thegetmorehas accessed its cursor information, thecursorfield is not available.getmore访问其游标信息之前报告getmore操作,则cursor字段不可用。$currentOp.cursor.cursorIdThe ID of the cursor.游标的ID。
$currentOp.cursor.createdDateThe date and time when the cursor was created.创建游标的日期和时间。
$currentOp.cursor.lastAccessDateThe date and time when the cursor was last used.上次使用游标的日期和时间。If the cursor is actively in use (i.e.如果游标正在使用中(即opisgetmoreand thetypeis notidleCursor), thenlastAccessDatereports either the time the previousgetmoreended or the time the cursor was created if this is the firstgetmore.op是getmore,type不是idleCursor),则lastAccessDate会报告上一个getmore结束的时间,或者如果这是第一个getmore,则报告游标创建的时间。
$currentOp.cursor.nDocsReturnedThe cumulative number of documents returned by the cursor.游标返回的文档的累计数量。
$currentOp.cursor.nBatchesReturnedThe cumulative number of batches returned by the cursor.游标返回的累计批次数。
$currentOp.cursor.noCursorTimeoutThe flag that indicates that the cursor doesn't timeout when idle; i.e. if the cursor has the指示游标在空闲时不会超时的标志;即,如果游标设置了noTimeoutoption set.noTimeout选项。If true, the cursor does not time out when idle.如果为真,游标在空闲时不会超时。If false, the cursor times out when idle.如果为false,则游标在空闲时超时。
$currentOp.cursor.tailableThe flag that indicates if the cursor is a tailable cursor for a capped collection. Tailable cursors remain open after the client exhausts the results in the initial cursor.指示游标是否为带上限集合的可尾随游标的标志。可尾随游标在客户端耗尽初始游标中的结果后仍保持打开状态。
$currentOp.cursor.awaitDataThe flag that indicates whether the tailable cursor should temporarily block a该标志指示可尾随游标是否应在等待新数据时临时阻止游标上的getMorecommand on the cursor while waiting for new data rather than returning no data.getMore命令,而不是不返回任何数据。For non-tailable cursors, the value is always false.
$currentOp.cursor.originatingCommandTheoriginatingCommandfield contains the full command object (e.g.findoraggregate) which originally created the cursor.originatingCommand字段包含最初创建游标的完整命令对象(例如find或aggregate)。
$currentOp.cursor.planSummaryA string that specifies whether the cursor uses a collection scan (一个字符串,指定游标是使用集合扫描(COLLSCAN) or an index scan (IXSCAN { ... }).COLLSCAN)还是索引扫描(IXSCAN { ... })。TheIXSCANalso includes the specification document of the index used.IXSCAN还包括所用索引的规范文档。Not available when running with在localOps: trueonmongosor when reporting onidleCursors.mongos上使用localOps: true运行时或在idleCursors上报告时不可用。
$currentOp.cursor.operationUsingCursorIdThe使用游标的操作的opidof the operation using the cursor.opid。Only present if the cursor is not idle.仅在游标未空闲时显示。
$currentOp.cursor.queryFrameworkNew in version 6.2.在版本6.2中新增。A string that specifies the query framework used to process an operation.一个字符串,指定用于处理操作的查询框架。
$currentOp.planSummaryA string that specifies whether the cursor uses a collection scan (一个字符串,指定游标是使用集合扫描(COLLSCAN) or an index scan (IXSCAN { ... }).COLLSCAN)还是索引扫描(IXSCAN { ... })。Not available when running withlocalOps: trueonmongos.mongos上与localOps: true一起运行时不可用。
$currentOp.prepareReadConflictsThe number of times the current operation had to wait for a prepared transaction with a write to commit or abort.当前操作必须等待准备好的具有写入的事务提交或中止的次数。While waiting, the operation continues to hold any necessary locks and storage engine resources.在等待期间,操作将继续持有任何必要的锁和存储引擎资源。
$currentOp.writeConflictsThe number of times the current operation conflicted with another write operation on the same document.当前操作与同一文档上的另一个写入操作冲突的次数。
$currentOp.numYieldsnumYieldsis 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.通常,当操作需要访问MongoDB尚未完全读入内存的数据时,它们会屈服。这允许在内存中有数据的其他操作快速完成,而MongoDB读取数据以进行屈服操作。
$currentOp.queryShapeHashNew in version 8.0.在版本8.0中新增。queryShapeHashis a hexadecimal string with the hash of a query shape. For details, see Query Shapes.queryShapeHash是一个十六进制字符串,具有查询形状的哈希值。有关详细信息,请参阅查询形状。
$currentOp.dataThroughputLastSecondAmount of data (in MiB) processed by thevalidateoperation in the last second.validate(验证)操作在最后一秒内处理的数据量(单位:MiB)。Only available for a仅适用于当前正在扫描文档的validateoperation that is currently scanning documents. For example:validate(操作)。例如:"msg" : "Validate: scanning documents Validate: scanning documents: 7258/24000 30%",
"progress" : {
"done" : 7258,
"total" : 24000
},
"numYields" : 0,
"dataThroughputLastSecond" : 15.576952934265137,
"dataThroughputAverage" : 15.375944137573242,
$currentOp.dataThroughputAverageThe average amount of data (in MiB) processed by thevalidateoperation. Only available for avalidateoperation that is currently scanning documents. For example:validate(验证)操作处理的平均数据量(单位:MiB)。仅适用于当前正在扫描文档的validate(验证)操作。例如:"msg" : "Validate: scanning documents Validate: scanning documents: 7258/24000 30%",
"progress" : {
"done" : 7258,
"total" : 24000
},
"numYields" : 0,
"dataThroughputLastSecond" : 15.576952934265137,
"dataThroughputAverage" : 15.375944137573242,
$currentOp.locksThelocksdocument reports the type and mode of locks the operation currently holds. The possible lock types are as follows:locks文档报告了操作当前持有的锁的类型和模式。可能的锁类型如下:Lock Type锁定类型Description描述ParallelBatchWriterModeRepresents a lock for parallel batch writer mode.表示并行批处理写入器模式的锁。In earlier versions, PBWM information was reported as part of the在早期版本中,PBWM信息作为Globallock information.Global(全局)锁信息的一部分进行报告。ReplicationStateTransitionRepresents lock taken for replica set member state transitions.表示为副本集成员状态转换所采取的锁。GlobalRepresents global lock.表示全局锁。DatabaseRepresents database lock.表示数据库锁。CollectionRepresents collection lock.表示集合锁。MutexRepresents mutex.表示互斥体。MetadataRepresents metadata lock.表示元数据锁。DDLDatabaseRepresents a DDL database lock.表示DDL数据库锁。
New in version 7.1.在版本7.1中新增。DDLCollectionRepresents a DDL collection lock.表示DDL集合锁。New in version 7.1.在版本7.1中新增。oplogRepresents lock on the oplog.表示oplog上的锁。The possible modes are as follows:可能的模式如下:Lock Mode锁定模式Description描述RRepresents Shared (S) lock.表示共享(S)锁。WRepresents Exclusive (X) lock.表示独占(X)锁。rRepresents Intent Shared (IS) lock.表示意图共享(IS)锁。wRepresents Intent Exclusive (IX) lock.表示意图独占(IX)锁。
$currentOp.lockStatsFor each lock type and mode (see对于每种锁类型和模式(有关锁类型和方式的描述,请参阅locksfor descriptions of lock types and modes), returns the following information:locks),返回以下信息:$currentOp.lockStats.acquireCountNumber of times the operation acquired the lock in the specified mode.操作在指定模式下获取锁的次数。
$currentOp.lockStats.acquireWaitCountNumber of times the operation had to wait for the由于锁处于冲突模式,操作不得不等待acquireCountlock acquisitions because the locks were held in a conflicting mode.acquireCount锁获取的次数。acquireWaitCountis less than or equal to小于或等于acquireCount.acquireCount。
$currentOp.lockStats.timeAcquiringMicrosCumulative 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.timeAcquiringMicros除以acquireWaitCount得到特定锁定模式的近似平均等待时间。
$currentOp.lockStats.deadlockCountNumber of times the operation encountered deadlocks while waiting for lock acquisitions.操作在等待锁获取时遇到死锁的次数。
$currentOp.waitingForLockReturns a boolean value.返回一个布尔值。如果操作正在等待锁,则waitingForLockistrueif the operation is waiting for a lock andfalseif the operation has the required lock.waitingForLock为true,如果操作具有所需的锁,则为false。
$currentOp.msgThemsgprovides 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.msg提供了一条描述操作状态和进度的消息。在索引或mapReduce操作的情况下,该字段会报告完成百分比。
$currentOp.progressReports on the progress of mapReduce or indexing operations. The报告mapReduce或索引操作的进度。progressfields corresponds to the completion percentage in themsgfield. Theprogressspecifies the following information:progress字段对应于msg字段中的完成百分比。progress指定了以下信息:$currentOp.progress.doneReports the number of work items completed.报告已完成的工作项数量。
$currentOp.progress.totalReports the total number of work items.报告工作项的总数。
$currentOp.killPendingReturns如果操作当前被标记为终止,则返回trueif the operation is currently flagged for termination. When the operation encounters its next safe termination point, the operation terminates.true。当操作遇到下一个安全终止点时,操作终止。
$currentOp.waitingForFlowControlA boolean that indicates if the operation had to wait because of flow control.一个布尔值,指示操作是否因流控制而必须等待。
$currentOp.flowControlStatsThe flow control statistics for this operation.此操作的流量控制统计信息。$currentOp.flowControlStats.acquireCountThe number of times this operation acquired a ticket.此操作获取票证的次数。
$currentOp.flowControlStats.acquireWaitCountThe number of times this operation waited to acquire a ticket.此操作等待获取票证的次数。
$currentOp.flowControlStats.timeAcquiringMicrosThe total time this operation has waited to acquire a ticket.此操作等待获取票证的总时间。
$currentOp.totalOperationTimeElapsedThe total time elapsed, in seconds, for the current resharding operation. The time is set to 0 when a new resharding operation starts.当前重新分片操作所用的总时间(秒)。新的重新分片操作开始时,时间设置为0。Only present if a resharding operation is taking place.仅在正在进行重新分片操作时才显示。New in version 5.0.在版本5.0中新增。
$currentOp.remainingOperationTimeEstimatedThe estimated time remaining in seconds for the current resharding operation. The time is set to -1 when a new resharding operation starts.当前重新分片操作的估计剩余时间(秒)。新的重新分片操作开始时,时间设置为-1。Only present when a resharding operation is taking place. This field may not be present if an estimate cannot not be computed.仅在进行重新分片操作时显示。如果无法计算估计值,则此字段可能不存在。New in version 5.0.在版本5.0中新增。
$currentOp.approxDocumentsToCopyThe approximate number of documents to be copied from the donor shards to the recipient shards during the resharding operation.在重新分片操作期间,要从供体分片复制到受体分片的文档的大致数量。This number is an estimate that is set at the beginning of the resharding operation and does not change after it has been set. The number is set to 0 when a new resharding operation starts.此数字是在重新分片操作开始时设置的估计值,设置后不会改变。当新的重新分片操作开始时,该数字设置为0。It is possible for如果重新分片后的数据分布不完全均匀,则$currentOp.documentsCopiedand$currentOp.bytesCopiedto end up exceeding$currentOp.approxDocumentsToCopyand$currentOp.approxBytesToCopy, respectively, if the post-resharding data distribution is not perfectly uniform.$currentOp.documentsCopied和$currentOp.bytesCopied可能最终分别超过$currentOp.approxDocumentsToCopy和$currentOp.approxBytesToCopy。Only present on a recipient shard when a resharding operation is taking place.仅在进行重新分片操作时出现在受体分片上。New in version 5.0.在版本5.0中新增。
$currentOp.documentsCopiedThe number of documents copied form donor shards to recipient shards during the resharding operation. The number is set to 0 when a new resharding operation starts.在重新分片操作期间从供体分片复制到受体分片的文档数量。当新的重新分片操作开始时,该数字设置为0。Only present on a recipient shard when a resharding operation is taking place.仅在进行重新分片操作时出现在受体分片上。New in version 5.0.在版本5.0中新增。
$currentOp.approxBytesToCopyThe approximate number of bytes to be copied from the donor shards to the recipient shards during the resharding operation. This number is an estimate that is set at the beginning of the resharding operation and does not change after it has been set.在重新分片操作期间,从供体分片复制到受体分片的大致字节数。此数字是在重新分片操作开始时设置的估计值,设置后不会改变。The number is set to 0 when a new resharding operation starts. It is possible for当新的重新分片操作开始时,该数字设置为0。如果重新分片后的数据分布不完全均匀,则$currentOp.documentsCopiedand$currentOp.bytesCopiedto end up exceeding$currentOp.approxDocumentsToCopyand$currentOp.approxBytesToCopy, respectively, if the post-resharding data distribution is not perfectly uniform.$currentOp.documentsCopied和$currentOp.bytesCopied可能最终分别超过$currentOp.approxDocumentsToCopy和$currentOp.approxBytesToCopy。Only present on a recipient shard when a resharding operation is taking place.仅在进行重新分片操作时出现在受体分片上。New in version 5.0.在版本5.0中新增。
$currentOp.bytesCopiedThe number of bytes copied from donor shards to recipient shards during the resharding operation. The number is set to 0 when a new resharding operation starts.在重新分片操作期间从供体分片复制到受体分片的字节数。当新的重新分片操作开始时,该数字设置为0。Only present on a recipient shard when a resharding operation is taking place.仅在进行重新分片操作时出现在受体分片上。New in version 5.0.在版本5.0中新增。
$currentOp.totalCopyTimeElapsedThe total elapsed time, in seconds, for ongoing data copy tasks from donor shards to recipient shards for the current resharding operation. The time is set to 0 when a new resharding operation starts.当前重新分片操作中,从供体分片到受体分片的正在进行的数据复制任务的总耗时(秒)。新的重新分片操作开始时,时间设置为0。Only present on a recipient shard when a resharding operation is taking place.仅在进行重新分片操作时出现在受体分片上。New in version 5.0.在版本5.0中新增。
$currentOp.oplogEntriesFetchedThe number of entries fetched from the oplog for the current resharding operation. The number is set to 0 when a new resharding operation starts.从oplog中获取的当前重新分片操作的条目数。当新的重新分片操作开始时,该数字设置为0。Only present on a recipient shard when a resharding operation is taking place.仅在进行重新分片操作时出现在受体分片上。New in version 5.0.在版本5.0中新增。
$currentOp.oplogEntriesAppliedThe number of entries applied to the oplog for the current resharding operation. The number is set to 0 when a new resharding operation starts.应用于oplog以进行当前重新分片操作的条目数。当新的重新分片操作开始时,该数字设置为0。Only present on a recipient shard when a resharding operation is taking place.仅在进行重新分片操作时出现在受体分片上。New in version 5.0.在版本5.0中新增。
$currentOp.totalApplyTimeElapsedThe total elapsed time, in seconds, for the apply step of the current resharding operation. In the apply step, recipient shards apply oplog entries to modify their data based on new incoming writes from donor shards. The time is set to 0 when a new resharding operation starts.当前重新分片操作的应用步骤的总耗时(秒)。在应用步骤中,受体分片应用oplog条目,以根据来自供体分片的新写入修改其数据。新的重新分片操作开始时,时间设置为0。Only present on a recipient shard when a resharding operation is taking place.仅在进行重新分片操作时出现在受体分片上。New in version 5.0.在版本5.0中新增。
$currentOp.countWritesDuringCriticalSectionThe number of writes performed in the critical section for the current resharding operation. The critical section prevents new incoming writes to the collection currently being resharded. The number is set to 0 when a new resharding operation starts.在当前重新分片操作的关键部分中执行的写入次数。关键部分防止对当前正在重新保护的集合进行新的写入。当新的重新分片操作开始时,该数字设置为0。Only present on a donor shard when a resharding operation is taking place.仅在进行重新分片操作时出现在供体分片上。New in version 5.0.在版本5.0中新增。
$currentOp.totalCriticalSectionTimeElapsedThe total elapsed time, in seconds, for the critical section of the current resharding operation. The critical section prevents new incoming writes to the collection currently being resharded. The time is set to 0 when a new resharding operation starts.当前重新分片操作关键部分的总耗时(秒)。关键部分防止对当前正在重新保护的集合进行新的写入。新的重新分片操作开始时,时间设置为0。Only present on a donor shard when a resharding operation is taking place.仅在进行重新分片操作时出现在供体分片上。New in version 5.0.在版本5.0中新增。
$currentOp.donorStateThe current state of a donor shard for the resharding operation. The state is set to用于重新分片操作的供体分片的当前状态。当新的重新分片操作开始时,状态设置为未使用。unusedwhen a new resharding operation starts.Only present on a donor shard when a resharding operation is taking place.仅在进行重新分片操作时出现在供体分片上。State状态Description描述unusedThe resharding operation is about to start or recovering from a primary failover.重新分片操作即将开始或从主故障转移中恢复。preparing-to-donateThe donor shard is preparing to donate data to the recipient shards.供体分片正准备将数据捐赠给受体分片。donating-initial-dataThe donor shard is donating data to the recipient shards.供体分片正在向受体分片捐赠数据。donating-oplog-entriesThe donor shard is donating oplog entries to the recipient shards.供体分片将oplog条目捐赠给受体分片。preparing-to-block-writesThe donor shard is about to prevent new incoming write operations to the collection that is being resharded.供体分片即将阻止对正在重新分片的集合进行新的写入操作。errorAn error occurred during the resharding operation.重新分片操作期间出错。blocking-writesThe donor shard is preventing new incoming write operations and the donor shard has notified all recipient shards that new incoming writes are prevented.供体分片正在阻止新的传入写入操作,并且供体分片已通知所有受体分片阻止了新的传入写操作。doneThe donor shard has dropped the old sharded collection and the resharding operation is complete.供体分片已经丢弃了旧的分片集合,重新分片操作完成。New in version 5.0.在版本5.0中新增。
$currentOp.recipientStateThe current state of a recipient shard for a resharding operation. The state is set to重新分片操作的受体分片的当前状态。当新的重新分片操作开始时,状态设置为unusedwhen a new resharding operation starts.unused(未使用)。Only present on a donor shard when a resharding operation is taking place.仅在进行重新分片操作时出现在供体分片上。State状态Description描述unusedThe resharding operation is about to start or recovering from a primary failover.重新分片操作即将开始或从主故障转移中恢复。awaiting-fetch-timestampThe recipient shard is waiting for the donor shards to be prepared to donate their data.受体分片正在等待供体分片准备捐赠他们的数据。creating-collectionThe recipient shard is creating the new sharded collection.受体分片正在创建新的分片集合。cloningThe recipient shard is receiving data from the donor shards.受体分片正在从供体分片接收数据。applyingThe recipient shard is applying oplog entries to modify its copy of the data based on the new incoming writes from donor shards.受体分片正在应用oplog条目,以根据来自供体分片的新写入来修改其数据副本。errorAn error occurred during the resharding operation.重新分片操作期间出错。strict-consistencyThe recipient shard has all data changes stored in a temporary collection.受体分片将所有数据更改存储在临时集合中。doneThe resharding operation is complete.重新分片操作已完成。New in version 5.0.在版本5.0中新增。
$currentOp.coordinatorStateThe state of the resharding coordinator for the current resharding operation. The resharding coordinator is an operation that runs on the config server primary. The state is set to当前重新分片操作的换牌协调器的状态。重新分片协调器是在配置服务器primary上运行的操作。当新的重新分片操作开始时,状态设置为unusedwhen a new resharding operation starts.unused(未使用)。Only present on the coordinating config server.仅存在于协调配置服务器上。State状态Description描述unusedThe resharding operation is about to start or recovering from a primary failover.重新分片操作即将开始或从主故障转移中恢复。initializingThe resharding coordinator has inserted the coordinator document into重新分片协调器已将协调器文档插入到config.reshardingOperationsand has added thereshardingFieldsto theconfig.collectionsentry for the original collection.config.reshardingOperations中,并将重新分片字段添加到原始集合的reshardingFields条目中。preparing-to-donateThe resharding coordinator重新分片协调器-
has created a已为临时数据库创建了config.collectionsentry for the temporaryconfig.collections条目resharding collection.重新分片集合。
-
has inserted entries into已将基于以下内容的范围的条目插入到config.chunksfor ranges based on theconfig.chunks中new shard key.新的分片键。
-
has inserted entries into已将条目插入到任何关联区域的配置标签中config.tagsfor any zones associatedwith the new shard key.使用新的分片键。
The coordinator informs participant shards to begin the resharding operation. The coordinator then waits until all donor shards have picked a协调器通知参与者分片开始重新分片操作。然后,协调器会等待,直到所有供体分片都选择了minFetchTimestampand are ready to donate.minFetchTimestamp并准备捐赠。cloningThe resharding coordinator informs donor shards to donate data to recipient shards. The coordinator waits for all recipients to finish cloning the data from the donor.重新分片协调器通知供体分片将数据捐赠给受体分片。协调器等待所有接收者完成从供体克隆数据。applyingThe resharding coordinator informs recipient shards to modify their copies of data based on new incoming writes from donor shards. The coordinator waits for all recipients to finish applying oplog entries.重新分片协调器通知受体分片根据来自供体分片的新写入修改其数据副本。协调器等待所有收件人完成应用oplog条目。blocking-writesThe resharding coordinator informs donor shards to prevent new incoming write operations to the collection being resharded. The coordinator then waits for all recipients to have all data changes.重新分片协调器通知供体分片,以防止对正在重新分片的集合进行新的写入操作。然后,协调器等待所有收件人进行所有数据更改。abortingAn unrecoverable error occurred during the resharding operation or the abortReshardCollectioncommand (or thesh.abortReshardCollection()method) was run.committingThe resharding coordinator removes the重新分片协调器删除临时重新分片集合的config.collectionsentry for the temporary resharding collection. The coordinator then adds therecipientFieldsto the source collection's entry.config.collections条目。然后,协调器将recipientFields添加到源集合的条目中。New in version 5.0.在版本5.0中新增。-
$currentOp.opStatusThe current state of a resharding operation.重新分片操作的当前状态。Only present if a resharding operation is taking place. Once the operation has completed, the operation is removed from仅在正在进行重新分片操作时才显示。操作完成后,该操作将从currentOpoutput.currentOp输出中删除。State状态Description描述actively runningThe resharding operation is actively running.重新分片操作正在积极运行。successThe resharding operation has succeeded.重新分片操作已成功。failureThe resharding operation has failed.重新分片操作失败。canceledThe resharding operation was canceled.重新分片操作已取消。New in version 5.0.在版本5.0中新增。
$currentOp.collUuidThe UUID of the sampled collection.采样集合的UUID。This field only appears on documents related to query sampling. For details, see Sampled Queries.此字段仅出现在与查询采样相关的文档上。有关详细信息,请参阅采样查询。New in version 7.0.在版本7.0中新增。
$currentOp.queuesInformation about the current operation's有关当前操作ingressandexecutionqueues.ingress(入口)和execution(执行)队列的信息。
$currentOp.queues.isHoldingTicketIndicates whether the operation currently holds a ticket.指示操作当前是否持有票证。New in version 8.1.在版本8.1中新增。
$currentOp.startTimeThe time at which query sampling began.查询采样开始的时间。This field only appears on documents related to query sampling. For details, see Sampled Queries.此字段仅出现在与查询采样相关的文档上。有关详细信息,请参阅采样查询。New in version 7.0.在版本7.0中新增。
$currentOp.samplesPerSecondThe maximum number of queries to sample per second.每秒要采样的最大查询数。Only reported when running仅在$currentOponmongos.mongos上运行$currentOp时报告。This field only appears on documents related to query sampling. For details, see Sampled Queries.此字段仅出现在与查询采样相关的文档上。有关详细信息,请参阅采样查询。New in version 7.0.在版本7.0中新增。
$currentOp.sampledReadsCountThe number of sampled read queries.采样读取查询的数量。This field only appears on documents related to query sampling. For details, see Sampled Queries.此字段仅出现在与查询采样相关的文档上。有关详细信息,请参阅采样查询。New in version 7.0.在版本7.0中新增。
$currentOp.sampledWritesCountThe number of sampled write queries.采样写入查询的数量。This field only appears on documents related to query sampling. For details, see Sampled Queries.此字段仅出现在与查询采样相关的文档上。有关详细信息,请参阅采样查询。New in version 7.0.在版本7.0中新增。
$currentOp.sampledReadsBytesThe size of the sampled read queries, in bytes.采样读取查询的大小,以字节为单位。On a replica set, this is reported on every在复制品集上,每个蒙古人都会报告这一点。mongod.On a sharded cluster, this only reported on在分片集群上,这只报告了带有mongodwith--shardsvr.--shardsvr的mongod。This field only appears on documents related to query sampling. For details, see Sampled Queries.此字段仅出现在与查询采样相关的文档上。有关详细信息,请参阅采样查询。New in version 7.0.在版本7.0中新增。
$currentOp.sampledWritesBytesThe size of the sampled write queries, in bytes.采样写入查询的大小,以字节为单位。On a replica set, this is reported on every在复制品集上,每个mongod.mongod都会报告这一点。On a sharded cluster, this only reported on在分片集群上,这只报告了带有mongodwith--shardsvr.--shardsvr的mongod。This field only appears on documents related to query sampling. For details, see Sampled Queries.此字段仅出现在与查询采样相关的文档上。有关详细信息,请参阅采样查询。New in version 7.0.在版本7.0中新增。