Docs Menu
Docs Home
/
MongoDBマニュアル
/ / /

$currentOp(集計)

項目一覧

  • 定義
  • 制約
  • 出力フィールド
$currentOp

トランザクションの一部としてロックを保持している非アクティブなセッションおよびアクティブな操作および休止中の操作に関する情報を含むドキュメントのストリームを返します。 ステージでは、各操作またはセッションのドキュメントが返されます。 $currentOpを実行するには、 adminデータベースで db.aggregate()ヘルパーを使用します。

$currentOp集計ステージは、 currentOpコマンドとその mongoshヘルパー メソッドdb.currentOp()よりも優先されます。 currentOpコマンドとdb.currentOp()ヘルパー メソッドは単一ドキュメントで結果を返すため、 currentOp結果セットの合計サイズはドキュメントの最大16 MB BSON サイズ制限の対象となります。 $currentOpステージはドキュメントのストリームに対するカーソルを返します。各ドキュメントは 1 つの操作を報告します。 各操作ドキュメントは16 MB BSON の制限の対象となりますが、 currentOpコマンドとは異なり、結果セットの全体的なサイズに制限はありません。

$currentOp を使用すると、ドキュメントがパイプラインを通過するときに結果の任意の変換を実行することもできます。

{ $currentOp: { allUsers: <boolean>, idleConnections: <boolean>, idleCursors: <boolean>, idleSessions: <boolean>, localOps: <boolean> } }

$currentOp は、オプションドキュメントをオペランドとして受け取ります。

オプション
説明

ブール値。

  • falseに設定すると、 $currentOpは、 コマンドを実行したユーザーに属する操作、アイドル接続、アイドル カーソル、アイドル セッションについてのみ報告します。

  • trueに設定されている場合、 $currentOpはすべてのユーザーに属する操作を報告します。

アクセス制御を強制するスタンドアロンとレプリカセットでは、 allUsers: trueの場合はinprog特権が必要です。

アクセス制御を強制するシャーディングされたクラスターの場合、 $currentOpを実行するにはinprog特権が必要です。

デフォルトは false です。

ブール値。 falseに設定されている場合、 $currentOpはアクティブな操作のみを報告します。 trueに設定すると、 $currentOpはアイドル接続を含むすべての操作を返します。

デフォルトは false です。

ブール値。

trueに設定すると、 $currentOpは「アイドル」であるカーソルを報告します。つまり、 getMore操作において開いているが現在アクティブではない。

アイドル カーソルの情報では、type"idleCursor" に設定されています。

getMore操作情報で現在アクティブなカーソルに関する情報では、 type"op"に設定され、 opgetmoreに設定されています。

デフォルトは false です。

ブール値。

  • trueに設定すると、アクティブな操作や休止中の操作に加えて、 $currentOpは次の操作について報告します。

    • トランザクションの一部としてロックを保持している 非アクティブなセッション 。 非アクティブな各セッションは$currentOpストリームに個別のドキュメントとして表示されます。

      セッションのドキュメントには、 lsidフィールドにセッション ID に関する情報と、 transactionフィールドにトランザクションに関する情報が含まれています。

      アイドル セッションでは、 type"idleSession"に設定されています。

    • $currentOp.twoPhaseCommitCoordinator in inactive state

  • falseに設定されている場合、 $currentOpは次の項目についてレポートしません。

デフォルトは true です。

ブール値。 mongosで実行中の集計に対してtrueに設定すると、 $currentOpはそのmongosでローカルに実行されている操作のみを報告します。 falseの場合、代わりに$currentOpがシャードで実行中の操作を報告します。

localOpsパラメータは、mongod で実行されている$currentOp集計には影響しません

デフォルトは false です。

ブール値。 trueに設定されている場合、 $currentOpはすべてのシャードのデータを保持するノードごとにドキュメントを出力します。 falseに設定すると、 $curentOpはシャードごとにドキュメントを出力します。

たとえば、3 つのシャードを持つシャーディングされたクラスターでは、各シャードは 3 つのノードを含むレプリカセットです。

  • targetAllNodes=false は 3 つのドキュメントを出力します

  • targetAllNodes=true 9 つのドキュメントを出力します

デフォルトは false です。

バージョン 7.1 で追加

上記のパラメーターのいずれかを省略すると、$currentOp はそのパラメーターのデフォルト値を使用します。 すべてのパラメータのデフォルト値を使用するには、次に示すように空のドキュメントを指定します。

{ $currentOp: { } }
  • $currentOp は、パイプラインの最初のステージである必要があります。

  • $currentOpで開始されるパイプラインは、 adminデータベースでのみ実行できます。

Queryable Encryptionを使用する場合、 $currentOpの出力は特定の情報を編集します。

  • 出力では、 "command"以降のすべてのフィールドが省略されます。

  • 出力では、 "command"が最初の要素である$comment$dbのみを含むように編集されます。

次の例は、 $currentOp集計ステージの使用方法を示しています。

この例では、トランザクションの一部としてロックを保持している 非アクティブなセッション に関する情報を返します。 具体的な説明は以下の通りです。

  • 最初の ステージでは、すべてのアクティブな操作と、トランザクションの一部としてロックを保持している 非アクティブなセッション のドキュメントが返されます。

  • 第 2 ステージでは、トランザクションの一部としてロックを保持している 非アクティブなセッション に関連するドキュメントがフィルタリングされます。

db.getSiblingDB("admin").aggregate( [
{ $currentOp : { allUsers: true, idleSessions: true } },
{ $match : { active: false, transaction : { $exists: true } } }
] )

同等のフィルターを指定するには、 $currentOp.typeを使用します。

db.getSiblingDB("admin").aggregate( [
{ $currentOp : { allUsers: true, idleSessions: true } },
{ $match : { type: "idleSession" } }
] )

Tip

シャーディングされたクラスター上のトランザクションの場合、トランザクションの複合ビューについては、前の例にlocalOps:trueを含めます。

どちらの操作も次の形式のドキュメントを返します。

レプリカセットの一部であるmongodで実行した場合:

{
"type" : "idleSession",
"host" : "example.mongodb.com:27017",
"desc" : "inactive transaction",
"client" : "198.51.100.1:50428",
"connectionId" : NumberLong(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" : NumberLong(4),
"autocommit" : false,
"readConcern" : {
"level" : "snapshot",
"afterClusterTime" : Timestamp(1563892246, 1)
}
},
"readTimestamp" : Timestamp(0, 0),
"startWallClockTime" : "2019-07-23T10:30:49.461-04:00",
"timeOpenMicros" : NumberLong(1913590),
"timeActiveMicros" : NumberLong(55),
"timeInactiveMicros" : NumberLong(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" : NumberLong(5)
}
},
"Global" : {
"acquireCount" : {
"r" : NumberLong(3),
"w" : NumberLong(1)
}
},
"Database" : {
"acquireCount" : {
"r" : NumberLong(2),
"w" : NumberLong(1)
}
},
"Collection" : {
"acquireCount" : {
"w" : NumberLong(1)
}
},
"Mutex" : {
"acquireCount" : {
"r" : NumberLong(3)
}
},
"oplog" : {
"acquireCount" : {
"r" : NumberLong(2)
}
}
},
"waitingForFlowControl" : false,
"flowControlStats" : {},
}

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" : NumberLong(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" : NumberLong(2),
"autocommit" : false,
"readConcern" : {
"level" : "snapshot",
"afterClusterTime" : Timestamp(1571869019, 2)
}
},
"globalReadTimestamp" : Timestamp(1571869019, 2),
"startWallClockTime" : "2019-10-23T18:16:59.341-04:00",
"timeOpenMicros" : NumberLong(169244639),
"timeActiveMicros" : NumberLong(535),
"timeInactiveMicros" : NumberLong(169244104),
"numParticipants" : 2,
"participants" : [
{
"name" : "shardB",
"coordinator" : true,
"readOnly" : false
},
{
"name" : "shardA",
"coordinator" : false,
"readOnly" : false
}
],
"numReadOnlyParticipants" : 0,
"numNonReadOnlyParticipants" : 2
}
}

で localOps:true mongosなしで実行した場合、トランザクション情報はシャードあたり になります。

localOps:truemongos なしの で実行した場合、トランザクション情報はシャードあたり になります。

{
"shard" : "shardB",
"type" : "idleSession",
"host" : "shardB.mongodb.com:27018",
"desc" : "inactive transaction",
"client_s" : "198.51.100.1:53961",
"connectionId" : NumberLong(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" : NumberLong(1),
"autocommit" : false,
"readConcern" : {
"level" : "snapshot"
}
},
"readTimestamp" : Timestamp(0, 0),
"startWallClockTime" : "2019-10-21T18:31:12.192-04:00",
"timeOpenMicros" : NumberLong(24137008),
"timeActiveMicros" : NumberLong(52),
"timeInactiveMicros" : NumberLong(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" : NumberLong(3)
}
},
"Global" : {
"acquireCount" : {
"r" : NumberLong(1),
"w" : NumberLong(1)
}
},
"Database" : {
"acquireCount" : {
"r" : NumberLong(1),
"w" : NumberLong(1)
}
},
"Collection" : {
"acquireCount" : {
"r" : NumberLong(1),
"w" : NumberLong(1)
}
},
"Mutex" : {
"acquireCount" : {
"r" : NumberLong(6)
}
}
}
}
{
"shard" : "shardA",
"type" : "idleSession",
...
}

この例では、クエリのサンプリングプロセスに関する情報を返します。

  • 最初のステージでは、すべてのアクティブな操作のドキュメントが返されます。

  • 第 2 ステージは、クエリアナライザに関連するドキュメントをフィルタリングします。

db.getSiblingDB("admin").aggregate( [
{ $currentOp: { allUsers: true, localOps: true } },
{ $match: { desc: "query analyzer" } }
] )

このパイプラインは、次のような出力を返します。

レプリカセットの一部である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" : NumberLong(2),
"sampledReadsBytes" : NumberLong(346),
"sampledWritesCount" : NumberLong(3),
"sampledWritesBytes" : NumberLong(904)
}

シャーディングされたクラスターの一部である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" : NumberLong(2),
"sampledWritesCount" : NumberLong(3)
}

シャーディングされたクラスターの一部であるmongod --shardsvrで実行した場合:

{
"desc" : "query analyzer",
"ns" : "testDb.testColl",
"collUuid" : UUID("5130b4df-5966-434f-85f0-f8956b5ca74e"),
"startTime" : ISODate("2023-08-08T16:15:07.427Z"),
"sampledReadsCount" : NumberLong(2),
"sampledReadsBytes" : NumberLong(346),
"sampledWritesCount" : NumberLong(3),
"sampledWritesBytes" : NumberLong(904)
}

各出力ドキュメントには、 操作に関連する以下のフィールドのサブセットが含まれる場合があります。

$currentOp.type

操作の種類。 値は次のいずれかです。

  • op

  • idleSession

  • idleCursor

$currentOp.typeopの場合、 $currentOp.opは特定の操作の詳細を提供します。

$currentOp.host

操作が実行されるホストの名前。

$currentOp.shard

操作が実行されているシャードの名前。

シャーディングされたクラスターにのみ存在します。

$currentOp.desc

操作の説明。

$currentOp.connectionId

特定の操作が発生した接続の識別子。

$currentOp.client

操作の発信元となるクライアント接続の IP アドレス(またはホスト名)とエフェメラル ポート。

マルチドキュメントトランザクションの場合、 $currentOp.clientはトランザクション内で操作を実行するための最新のクライアントに関する情報を保存します。

スタンドアロンとレプリカセットのみ

$currentOp.client_s

操作の発信元となるmongosの IP アドレス(またはホスト名)とエフェメラル ポート。

シャーディングされたクラスターのみ

$currentOp.clientMetadata

クライアントに関する追加情報。

マルチドキュメントトランザクションの場合、 $currentOp.clientはトランザクション内で操作を実行するための最新のクライアントに関する情報を保存します。

$currentOp.appName

操作を実行したクライアント・アプリケーションの識別子。 appName接続stringオプションを使用して、appName フィールドにカスタム値を設定します。

$currentOp.active

操作が開始されたかどうかを指定するブール値。 値は、操作が開始された場合はtrueで、アイドル接続、非アクティブなセッション、現在アイドル状態の内部スレッドなど、操作がアイドル状態の場合はfalseです。 操作が別の操作に中断された場合でも、操作をアクティブにすることができます。

$currentOp.twoPhaseCommitCoordinator

次のいずれかに関する情報

  • 書込み (write) 操作が複数のシャードにまたがるトランザクションのコミット調整メトリクス。

    コミット調整はシャードによって処理され、 $currentOpmongosまたはシャード ノードで実行)は、シャードが現在調整しているトランザクションについてのみシャードの調整情報を返します。

    コミット調整メトリクスのみをフィルタリングするには:

    db.getSiblingDB("admin").aggregate( [
    { $currentOp: { allUsers: true, idleSessions: true } },
    { $match: { desc: "transaction coordinator" } }
    ] )
  • 特定のコミット調整操作( typeopであり、 desc"TransactionCoordinator"です)。

注意

$currentOp.twoPhaseCommitCoordinator.lsid

マルチシャード トランザクションのセッション識別子。

lsidtxnNumberの組み合わせはトランザクションを識別します。

コミット調整メトリクスと特定の調整操作の両方に使用できます。

$currentOp.twoPhaseCommitCoordinator.txnNumber

マルチシャード トランザクションのトランザクション番号。

txnNumberlsidの組み合わせはトランザクションを識別します。

コミット調整メトリクスと特定の調整操作の両方に使用できます。

$currentOp.twoPhaseCommitCoordinator.action

トランザクションの調整役によって生成される特定のコミット調整操作は、以下のとおりです。

  • "sendingPrepare"

  • "sendingCommit"

  • "sendingAbort"

  • "writingParticipantList"

  • "writingDecision"

  • "deletingCoordinatorDoc"

特定の調整操作でのみ使用できます。

$currentOp.twoPhaseCommitCoordinator.startTime

actionの開始日時。

特定の調整操作でのみ使用できます。

$currentOp.twoPhaseCommitCoordinator.numParticipants

このコミットに参加したシャードの数。

コミット調整メトリクスでのみ使用できます。

$currentOp.twoPhaseCommitCoordinator.state

コミット調整プロセスの現在のステップまたは状態。

ステップ/ステージ
説明
inactive
コミットのアクティブな一部ではない。
writingParticipantList
このマルチシャード トランザクションの一部であるシャードのリストをローカル レコードで書込み (write) ます。
waitingForVotes
参加者がコミットまたは中止への投票で応答するまで待機します。
writingDecision
投票に基づいてコミットまたは中止するかどうかのコーディネーターの決定をローカル レコードで書き込みます。
waitingForDecisionAck
コーディネーターのコミットまたは中止の決定を確認するまで、参加者が待機します。
deletingCoordinatorDoc
コミット決定のローカル レコードを削除します。

コミット調整メトリクスでのみ使用できます。

$currentOp.twoPhaseCommitCoordinator.stepDurationsも参照してください。

$currentOp.twoPhaseCommitCoordinator.commitStartTime

コミットが開始された日時。

コミット調整メトリクスでのみ使用できます。

$currentOp.twoPhaseCommitCoordinator.hasRecoveredFromFailover

コミットを調整しているシャードで フェイルオーバー によりコミット調整が再開されたかどうかを示すブール値。

hasRecoveredFromFailoverが true の場合、 $currentOp.twoPhaseCommitCoordinator.stepDurationsで指定される時間がすべてのステップで正確にならない可能性があります。

コミット調整メトリクスでのみ使用できます。

$currentOp.twoPhaseCommitCoordinator.stepDurations

アクティブなプロセスの完了または進行中のsteps/stateの期間(マイクロ秒単位)と累積合計期間を含むドキュメント。例:

"stepDurations" : {
"writingParticipantListMicros" : NumberLong(17801),
"totalCommitDurationMicros" : NumberLong(42488463),
"waitingForVotesMicros" : NumberLong(30378502),
"writingDecisionMicros" : NumberLong(15015),
"waitingForDecisionAcksMicros" : NumberLong(12077145),
"deletingCoordinatorDocMicros" : NumberLong(6009)
},

$currentOp.twoPhaseCommitCoordinator.hasRecoveredFromFailoverが true の場合、 stepDurationsで指定される時間がすべてのステップで正確にならない可能性があります。

inactive状態のコーディネーターの場合、ドキュメントは空です。

"stepDurations" : {
}

コミット調整メトリクスでのみ使用できます。

$currentOp.twoPhaseCommitCoordinator.state」を参照してください。

$currentOp.twoPhaseCommitCoordinator.decision

コミットまたは中止の決定を含むドキュメント。例:

  • コミットの決定を行うには:

    "decision" : {
    "decision" : "commit",
    "commitTimestamp" : Timestamp(1572034669, 3)
    }
  • 中止の決定を行うには:

    "decision" : {
    "decision" : "abort",
    "abortStatus" : {
    "code" : 282,
    "codeName" : "TransactionCoordinatorReachedAbortDecision",
    "errmsg" : "Transaction exceeded deadline"
    }
    }

コミット調整メトリクスでのみ使用できます。

$currentOp.twoPhaseCommitCoordinator.deadline

コミットが完了する必要がある日時。

コミット調整メトリクスでのみ使用できます。

$currentOp.currentOpTime

操作の開始時刻。

$currentOp.effectiveUsers

操作に関連付けられた各ユーザーのドキュメントを含む配列。 各ユーザー ドキュメントには、 user名と認証dbが含まれています。

Tip

以下も参照してください。

$currentOp.runBy

操作のためにeffectiveUser(s)を引き受けている各ユーザーのドキュメントを含む配列。 runBy ドキュメントにはuser名と認証dbが含まれています。 一般的に、権限を付与するユーザーは__systemユーザーです。例:

"runBy" : [
{
"user" : "__system",
"db" : "local"
}
]
$currentOp.opid

操作の識別子。 この値をdb.killOp()mongosh に渡すと、操作を終了できます。

警告

実行中の操作は、細心の注意を払って終了します。 クライアントによって開始された操作を終了するにはdb.killOp()のみを使用し、内部データベース操作は終了しません

$currentOp.secs_running

操作の期間(秒単位)。 MongoDB は、操作の開始時刻から現在の時刻を減算してこの値を計算します。

操作が実行中の場合にのみ存在します。つまり、 activetrueの場合は になります。

$currentOp.microsecs_running

操作の継続時間(マイクロ秒単位)。 MongoDB は、操作の開始時刻から現在の時刻を減算してこの値を計算します。

操作が実行中の場合にのみ存在します。つまり、 activetrueの場合は になります。

$currentOp.lsid

セッション識別子。

操作がセッションに関連付けられている場合にのみ存在します。

$currentOp.transaction

マルチドキュメントトランザクション情報を含むドキュメント。

操作がトランザクションの一部である場合にのみ存在します。

  • レプリカセット の場合。

  • シャーディングされたクラスターで、$currentOp localOps:true なし で実行されている場合。トランザクション情報はシャードごとです。

  • シャーディングされたクラスターで、 $currentOplocalOps:trueで実行されている場合 トランザクション情報は、シャードごとではなく、複合ビューです。

$currentOp.transaction.parameters

マルチドキュメントトランザクションに関する情報を含むドキュメント。

操作がマルチドキュメントトランザクションの一部である場合にのみ存在します。

$currentOp.transaction.parameters.txnNumber

トランザクション番号。

操作がマルチドキュメントトランザクションの一部である場合にのみ存在します。

$currentOp.transaction.parameters.autocommit

トランザクションでオートコミットがオンになっているかどうかを示すブール値のフラグ。

操作がマルチドキュメントトランザクションの一部である場合にのみ存在します。

$currentOp.transaction.parameters.readConcern

トランザクションの読み取り保証( read concern )です。

マルチドキュメントトランザクションは、読み取り保証(read concern) "snapshot""local""majority"をサポートします。

操作がマルチドキュメントトランザクションの一部である場合にのみ存在します。

$currentOp.transaction.globalReadTimestamp

「スナップショット」読み取り保証 (read concern)を使用するシャーディングされたトランザクション内の操作によって読み取られたスナップショットのタイムスタンプ。 シャーディングされたクラスター上のトランザクションの場合、データの読み取り保証(read concern) "snapshot"はシャード間で 同期されます 。つまり、その他の読み取り保証 (read concern) では、シャード全体でデータが同じスナップショット ビューから取得されることは保証されません。

シャーディングされたクラスター トランザクションに対してlocalOps: trueで実行した場合にのみ存在します。

$currentOp.transaction.readTimestamp

このトランザクションの操作によって読み取られるスナップショットのタイムスタンプ

操作がマルチドキュメントトランザクションの一部である場合にのみ存在します。 ただし、次の場合には、 フィールドは返されません。

代わりに、 $currentOp.transaction.globalReadTimestampが返されます。

$currentOp.transaction.startWallClockTime

トランザクションが開始された日時(タイムゾーン)。

操作がマルチドキュメントトランザクションの一部である場合にのみ存在します。

$currentOp.transaction.timeOpenMicros

トランザクションの期間(マイクロ秒単位)。

timeActiveMicrosに追加される の値はtimeInactiveMicros timeOpenMicrosと等しくなっている必要があります。

操作がマルチドキュメントトランザクションの一部である場合にのみ存在します。

$currentOp.transaction.timeActiveMicros

トランザクションがアクティブになっている合計時間。つまり、トランザクションで操作が実行されていた場合を指します。

timeActiveMicrosに追加される の値はtimeInactiveMicros timeOpenMicrosと等しくなっている必要があります。

操作がマルチドキュメントトランザクションの一部である場合にのみ存在します。

$currentOp.transaction.timeInactiveMicros

トランザクションが非アクティブであった合計時間。トランザクションで実行中の操作がない場合。

timeInactiveMicrosに追加される の値はtimeActiveMicros timeOpenMicrosと等しくなっている必要があります。

操作がマルチドキュメントトランザクションの一部である場合にのみ存在します。

$currentOp.transaction.numParticipants

このトランザクションに参加しているシャードの数。

操作がシャーディングされたクラスター上のトランザクションの一部であり、 $currentOplocalOps: trueで実行されている場合にのみ存在します。

$currentOp.transaction.participants

このトランザクションに参加しているシャードを詳細に示すドキュメントの配列。 各ドキュメントには、名前、シャードがコミット コーディネーターとして機能するかどうかを示すフラグ、シャードがトランザクションの読み取り操作のみに関与しているかどうかを示すフラグが含まれています。

{
"name" : "shardA",
"coordinator" : false,
"readOnly" : false
}

操作がシャーディングされたクラスター上のトランザクションの一部であり、 $currentOplocalOps: trueで実行されている場合にのみ存在します。

$currentOp.transaction.numReadOnlyParticipants

このトランザクション内の読み取り操作のみに影響を受けるシャードの数。

操作がシャーディングされたクラスター上のトランザクションの一部であり、 $currentOplocalOps: trueで実行されている場合にのみ存在します。

$currentOp.transaction.numNonReadOnlyParticipants

このトランザクション内の読み取り以外の操作によって影響を受けるシャードの数。

操作がシャーディングされたクラスター上のトランザクションの一部であり、 $currentOplocalOps: trueで実行されている場合にのみ存在します。

$currentOp.transaction.expiryTime

トランザクションがタイムアウトして中止される日時(タイムゾーンあり)。

$currentOp.transaction.expiryTime$currentOp.transaction.startWallClockTime + transactionLifetimeLimitSecondsに等しくなります。

詳細については、「 トランザクションの実行時間制限 」を参照してください。

操作がマルチドキュメントトランザクションの一部である場合にのみ存在します。

$currentOp.op

特定の操作タイプを識別する string。 $currentOp.typeopの場合にのみ存在します。

可能な値は次のとおりです。

  • "none"

  • "update"

  • "insert"

  • "query"

  • "command"

  • "getmore"

  • "remove"

  • "killcursors"

"command" 操作には、 、createIndexesaggregate 、 などのほとんどの コマンドfindAndModify が含まれます

"query" 操作には、 find操作と OP_QUERY 操作が含まれます。

$currentOp.ns

操作の対象となる名前空間。 名前空間は、データベース名とコレクション名をドットで連結したもの( . )で構成されています。つまり、 "<database>.<collection>"です。

$currentOp.command

この操作に関連付けられた完全なコマンドオブジェクトを含むドキュメント。

たとえば、次の出力には、 testという名前のデータベース内のitemsという名前のコレクションに対するfind操作のコマンド オブジェクトが含まれています。

"command" : {
"find" : "items",
"filter" : {
"sku" : 1403978
},
...
"$db" : "test"
}

次の出力例には、 testという名前のデータベース内のitemsという名前のコレクションで、カーソル ID 19234103609を持つ コマンドによって生成されたgetMore操作のコマンド オブジェクトが含まれています。

"command" : {
"getMore" : NumberLong("19234103609"),
"collection" : "items",
"batchSize" : 10,
...
"$db" : "test"
},

コマンド ドキュメントが 1 キロバイトを超える場合、ドキュメントの形式は次のようになります。

"command" : {
"$truncated": <string>,
"comment": <string>
}

$truncatedフィールドには、ドキュメントのcommentフィールド(存在する場合)を除いたドキュメントの string のサマリーが含まれます。 サマリーが依然として 1 キロバイトを超える場合は、さらに切り捨てられ、string の末尾に省略記号 (...) が表示されます。

操作にコメントが渡された場合、comment フィールドが存在します。任意のデータベースコマンドにコメントを添付できます。

$currentOp.cursor

idleCursor操作とgetmore操作のカーソル情報を含むドキュメントすなわち where type is idleCursor or op is getmore.

getmoreがカーソル情報にアクセスする前にgetmore操作を報告する場合、 cursorフィールドは使用できません。

$currentOp.cursor.cursorId

カーソルの ID。

$currentOp.cursor.createdDate

カーソルが作成された日時。

$currentOp.cursor.lastAccessDate

カーソルが最後に使用された日時。

カーソルがアクティブに使用されている場合(つまり opgetmoreであり、 typeidleCursorではありません)、 lastAccessDateは前回のgetmoreが終了した時間、または最初のgetmoreである場合はカーソルが作成された時間を報告します。

$currentOp.cursor.nDocsReturned

カーソルによって返されたドキュメントの累計数。

$currentOp.cursor.nBatchesReturned

カーソルによって返されたバッチの累計数。

$currentOp.cursor.noCursorTimeout

カーソルがアイドル状態のときにタイムアウトしないことを示すフラグ。 (つまり、カーソルにnoTimeoutオプションが設定されている場合)。

  • true の場合、アイドル状態のときにカーソルはタイムアウトしません。

  • false の場合、アイドル状態のときにカーソルはタイムアウトになります。

Tip

以下も参照してください。

$currentOp.cursor.tailable

カーソルがCappedコレクションの 追尾可能 (tailable) カーソル かどうかを示すフラグ。 クライアントが初期カーソルの結果を使い果たした後も、追尾可能 (tailable) カーソルはオープンしたままになります。

Tip

以下も参照してください。

$currentOp.cursor.awaitData

追尾可能 (tailable) カーソルが、データを返さずに新しいデータを待機している間に、カーソル上のgetMoreコマンドを一時的にブロックするかどうかを示すフラグ。

追尾可能 (tailable) ではないカーソルの場合、値は常に false です。

Tip

以下も参照してください。

$currentOp.cursor.originatingCommand

originatingCommandフィールドには完全なコマンドオブジェクト(例: findまたはaggregate )が必要です。

$currentOp.cursor.planSummary

カーソルがコレクションスキャン( COLLSCAN )を使用するか、インデックススキャン( IXSCAN { ... } )を使用するかを指定する string 。

IXSCANには、使用されるインデックスの仕様ドキュメントも含まれます。

mongoslocalOps: trueを使用して実行している場合、またはidleCursorsでレポート作成している場合は使用できません。

$currentOp.cursor.operationUsingCursorId

カーソルを使用する操作のopid

カーソルがアイドル状態でない場合にのみ存在します。

$currentOp.cursor.queryFramework

バージョン 6.2 の新機能

操作を処理するために使用されるクエリ フレームワークを指定する string。

$currentOp.planSummary

カーソルがコレクションスキャン( COLLSCAN )を使用するか、インデックススキャン( IXSCAN { ... } )を使用するかを指定する string 。

mongoslocalOps: trueを使用して実行している場合は使用できません。

$currentOp.prepareReadConflicts

現在の操作が、コミットまたは中止するための書込み (write) で準備されたトランザクションを待機しなければならなかった回数。

待機している間も、操作は必要なロックとストレージ エンジン リソースを保持し続けます。

$currentOp.writeConflicts

現在の操作が同じドキュメントで別の書込み (write) 操作と競合した回数。

$currentOp.numYields

numYields は、他の操作を完了させるために操作が中断した回数を報告するカウンターです。

通常、MongoDB がまだ完全にメモリに読み込んでいないデータにアクセスする必要がある場合、操作は中断します。 これにより、MongoDB が中断された操作のデータを読み込んでいる間に、メモリにデータがある他の操作を迅速に完了できます。

$currentOp.queryShapeHash

バージョン8.0の新機能

queryShapeHash は、string クエリシェイプ のハッシュを含む 16 進数の です。詳細については、「クエリシェイプ 」を参照してください。

$currentOp.dataThroughputLastSecond

過去 1 秒に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.dataThroughputAverage

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.locks

locksドキュメントは、操作が現在保持しているロックのタイプとモードを報告します。 使用可能なロック タイプは、以下のとおりです。

ロック タイプ
説明
ParallelBatchWriterMode

並列バッチ書込みモードのロックを表します。

以前のバージョンでは、PBWM 情報は Global ロック情報の一部として報告されていました。

ReplicationStateTransition
レプリカセットの状態遷移に対して取得されたロックを表します。
Global
グローバル ロックを表します。
Database
データベース ロックを表します。
Collection
コレクション ロックを表します。
Mutex
ミューテックスを表します。
Metadata
メタデータ ロックを表します。
DDLDatabase

DDLデータベース ロックを表します。

バージョン 7.1 で追加

DDLCollection

DDLコレクション ロックを表します。

バージョン 7.1 で追加

oplog
oplog のロックを表します。

使用可能なモードは次のとおりです。

ロックモード
説明
R
共有ロック(S)を表します。
W
排他ロック(X)を表します。
r
インテント共有ロック(IS)を表します。
w
インテント排他ロック(IX)を表します。
$currentOp.lockStats

各ロック タイプとモード(ロック タイプとモードの説明については、 locksを参照)について、次の情報を返します。

$currentOp.lockStats.acquireCount

操作が指定モードでロックを取得した回数。

$currentOp.lockStats.acquireWaitCount

ロックが競合モードで保持されていたために操作がacquireCountロックの取得を待機しなければならなかった回数。 acquireWaitCountacquireCountより小さいです。

$currentOp.lockStats.timeAcquiringMicros

操作がロックを取得するために待機しなければならなかった累計時間(マイクロ秒単位)。

timeAcquiringMicrosacquireWaitCount で割ると、特定のロック モードのおおよその平均待機時間が得られます。

$currentOp.lockStats.deadlockCount

ロック取得を待機中に操作でデッドロックが発生した回数。

$currentOp.waitingForLock

ブール値を返します。 waitingForLockは、操作がロックを待機している場合はtrueであり、操作に必要なロックがある場合はfalseです。

$currentOp.msg

msgには、操作のステータスと進行状況を説明するメッセージが表示されます。 インデックス操作または mapReduce 操作の場合、 フィールドには完了率が報告されます。

$currentOp.progress

mapReduce またはインデックス操作の進行状況を報告します。 progressフィールドは、 msgフィールドの完了パーセンテージに対応します。 progressは、次の情報を指定します。

$currentOp.progress.done

完了した作業項目の数を報告します。

$currentOp.progress.total

ワークアイテムの合計数を報告します。

$currentOp.killPending

操作に現在終了のフラグが付けられている場合は、 trueを返します。 操作が次の安全な終了点に遭遇すると、操作は終了します。

$currentOp.waitingForFlowControl

フロー制御のために操作が待機する必要があった場合は、ブール値。

$currentOp.flowControlStats

この操作のフロー制御に関する統計。

$currentOp.flowControlStats.acquireCount

この操作でチケットが取得された回数。

$currentOp.flowControlStats.acquireWaitCount

この操作がチケットを取得するために待機した回数。

$currentOp.flowControlStats.timeAcquiringMicros

この操作がチケットを取得するために待機した合計時間。

$currentOp.totalOperationTimeElapsed

現在のリシャーディング操作の合計経過時間(秒単位)。 新たにリシャーディング操作を開始すると、時間は 0 に設定されます。

リシャーディング操作 が行われている場合にのみ存在します。

バージョン 5.0 で追加

$currentOp.remainingOperationTimeEstimated

The estimated time remaining in seconds for the current resharding operation. 新たにリシャーディング操作を開始すると、時間は -1 に設定されます。

リシャーディング操作 が行われているときにのみ存在します。 推定値が計算できない場合、このフィールドが存在しないことがあります。

バージョン 5.0 で追加

$currentOp.approxDocumentsToCopy

リシャーディング操作中にドナー シャードから受信者シャードにコピーされるドキュメントのおおよその数です。 この数値は、リシャーディング操作の開始時に設定され、設定された後は変化しない推定値です。 新たにリシャーディング操作を開始すると、数値は 0 に設定されます。 リシャーディング後のデータ分布が完全に均等でない場合、 $currentOp.documentsCopied$currentOp.bytesCopiedはそれぞれ$currentOp.approxDocumentsToCopy$currentOp.approxBytesToCopyを超えてしまう可能性があります。

リシャーディング操作 が行われているときにのみ 受信者シャード に存在します。

バージョン 5.0 で追加

$currentOp.documentsCopied

リシャーディング操作中にドナー シャードから受信者シャードにコピーされたドキュメントの数です。 新たにリシャーディング操作を開始すると、数値は 0 に設定されます。

リシャーディング操作 が行われているときにのみ 受信者シャード に存在します。

バージョン 5.0 で追加

$currentOp.approxBytesToCopy

リシャーディング操作中にドナー シャードから受信者シャードにコピーされるおおよそのバイト数。 この数値は、リシャーディング操作の開始時に設定され、設定された後は変化しない推定値です。 新たにリシャーディング操作を開始すると、数値は 0 に設定されます。 リシャーディング後のデータ分布が完全に均等でない場合、 $currentOp.documentsCopied$currentOp.bytesCopiedはそれぞれ$currentOp.approxDocumentsToCopy$currentOp.approxBytesToCopyを超えてしまう可能性があります。

リシャーディング操作 が行われているときにのみ 受信者シャード に存在します。

バージョン 5.0 で追加

$currentOp.bytesCopied

リシャーディング操作中にドナー シャードから受信者シャードにコピーされたバイト数です。 新たにリシャーディング操作を開始すると、数値は 0 に設定されます。

リシャーディング操作 が行われているときにのみ 受信者シャード に存在します。

バージョン 5.0 で追加

$currentOp.totalCopyTimeElapsed

現在のリシャーディング操作におけるドナー シャードから受信者シャードへの進行中のデータ コピー タスクの合計経過時間(秒単位)。 新たにリシャーディング操作を開始すると、時間は 0 に設定されます。

リシャーディング操作 が行われているときにのみ 受信者シャード に存在します。

バージョン 5.0 で追加

$currentOp.oplogEntriesFetched

現在の リシャーディング操作 で oplog から取得されたエントリの数です。新たにリシャーディング操作を開始すると、数値は 0 に設定されます。

リシャーディング操作 が行われているときにのみ 受信者シャード に存在します。

バージョン 5.0 で追加

$currentOp.oplogEntriesApplied

現在の リシャーディング操作 で oplog に適用されたエントリの数。新たにリシャーディング操作を開始すると、数値は 0 に設定されます。

リシャーディング操作 が行われているときにのみ 受信者シャード に存在します。

バージョン 5.0 で追加

$currentOp.totalApplyTimeElapsed

現在のリシャーディング操作における適用ステップの合計経過時間(秒単位)です。 適用ステップでは、受信者シャードは、ドナー シャードから新たに受信した書込み (write) に基づいてデータを変更するために、 oplogエントリを適用します。 新たにリシャーディング操作を開始すると、時間は 0 に設定されます。

リシャーディング操作 が行われているときにのみ 受信者シャード に存在します。

バージョン 5.0 で追加

$currentOp.countWritesDuringCriticalSection

現在のリシャーディング操作でクリティカル セクションにおいて実行された書込み (write) の数。 クリティカル セクションは、リシャーディング中のコレクションへの新規の受信書込み (write) を防止します。 新たにリシャーディング操作を開始すると、数値は 0 に設定されます。

リシャーディング操作が行われているときにのみ存在します。

バージョン 5.0 で追加

$currentOp.totalCriticalSectionTimeElapsed

現在のリシャーディング操作におけるクリティカル セクションの合計経過時間(秒単位)。 クリティカル セクションは、リシャーディング中のコレクションへの新規の受信書込み (write) を防止します。 新たにリシャーディング操作を開始すると、時間は 0 に設定されます。

リシャーディング操作が行われているときにのみ存在します。

バージョン 5.0 で追加

$currentOp.donorState

リシャーディング操作におけるドナー シャードの現在の状態です。 新たにリシャーディング操作を開始すると、状態はunusedに設定されます。

リシャーディング操作が行われているときにのみ存在します。

状態
説明
unused
リシャーディング操作を開始またはプライマリ フェイルオーバーから回復しようとしているとき
preparing-to-donate
ドナー シャードは、受信者シャードにデータを提供する準備をしています。
donating-initial-data
ドナー シャードは受信者シャードにデータを提供します。
donating-oplog-entries
ドナー シャードは、受信者シャードに oplog エントリを提供しています。
preparing-to-block-writes
ドナー シャードは、リシャーディング中のコレクションへの新規の受信書込み (write) 操作を阻止しようとしています。
error
リシャーディング操作中にエラーが発生しました
blocking-writes
ドナー シャードは新規の受信書込み (write) 操作を防ぎ、新規の受信書込み (write) が禁止されていることをすべての受信者シャードに通知しました。
done
ドナー シャードは古いシャーディングされたコレクションを削除し、リシャーディング操作は完了しました。

バージョン 5.0 で追加

$currentOp.recipientState

リシャーディング操作 における受信者シャードの現在の状態です。 新たにリシャーディング操作を開始すると、状態はunusedに設定されます。

リシャーディング操作が行われているときにのみ存在します。

状態
説明
unused
リシャーディング操作を開始またはプライマリ フェイルオーバーから回復しようとしているとき
awaiting-fetch-timestamp
受信シャードは、ドナー シャードがデータを提供する準備ができるのを待っています。
creating-collection
受信者シャードは新しいシャーディングされたコレクションを作成しています。
cloning
受信者シャードはドナー シャードからデータを受信しています。
applying
受信者シャードは、ドナー シャードからの新規受信書込み (write) に基づいてデータのコピーを変更するために、oplog エントリを適用しています。
error
リシャーディング操作中にエラーが発生しました
strict-consistency
受信者シャードでは、すべてのデータ変更は一時的なコレクションに保存されます。
done
リシャーディング操作が完了しました。

バージョン 5.0 で追加

$currentOp.coordinatorState

現在のリシャーディング操作におけるリシャーディング コーディネーターの状態です。 リシャーディング コーディネーターは、 コンフィギュレーションサーバーのプライマリで実行される操作です。 新たにリシャーディング操作を開始すると、状態はunusedに設定されます。

調整コンフィギュレーションサーバー上にのみ存在します。

状態
説明
unused
リシャーディング操作を開始またはプライマリ フェイルオーバーから回復しようとしているとき
initializing
リシャーディング コーディネーターは、コーディネーター ドキュメントを config.reshardingOperations に挿入し、元のコレクションの config.collections エントリに reshardingFields を追加しました。
preparing-to-donate

リシャーディング コーディネーター

  • は一時的なリシャーディング コレクション用の config.collections エントリを作成しました。

  • は新しいシャードキーに基づく範囲に対するエントリを config.chunks に挿入しました。

  • は新しいシャード キーに関連付けられたすべてのゾーンに対するエントリを config.tags に挿入しました。

コーディネーターは、参加シャードにリシャーディング操作を開始するように通知します。その後、コーディネーターはすべてのドナー シャードが minFetchTimestamp を選択し、提供の準備が整うまで待ちます。

cloning
リシャーディング コーディネーターは、受信者シャードにデータを提供するようドナー シャードに通知します。コーディネーターは、すべての受信者がドナーからのデータの複製を完了させるのを待機します。
applying
リシャーディング コーディネーターは、ドナー シャードから新たに受信した書込み (write) に基づいてデータのコピーを変更するよう、受信者シャードに通知します。コーディネーターは、すべての受信者が oplog エントリの適用を完了させるのを待機します。
blocking-writes
リシャーディング コーディネーターは、コレクションへの新たな受信書込み (write) 操作がリシャーディングされないよう、ドナー シャードに通知します。その後、コーディネーターはすべての受信者がすべてのデータ変更を完了させるのを待機します。
aborting
リシャーディング操作中に回復不能なエラーが発生したか、abortReshardCollection コマンド(またはsh.abortReshardCollection()メソッド)が実行されました。
committing
リシャーディング コーディネーターは、一時的なリシャーディングコレクションの config.collections エントリを削除します。次に、コーディネーターは recipientFields をソース コレクションのエントリに追加します。

バージョン 5.0 で追加

$currentOp.opStatus

リシャーディング操作の現在の状態です。

リシャーディング操作 が行われている場合にのみ存在します。 操作が完了すると、その操作はcurrentOpの出力から削除されます。

状態
説明
actively running
リシャーディング操作がアクティブに実行されている。
success
リシャーディング操作が成功しました。
failure
リシャーディング操作が失敗しました。
canceled
リシャーディング操作がキャンセルされました。

バージョン 5.0 で追加

$currentOp.collUuid

サンプリングされたコレクションの UUID 。

このフィールドは、クエリ サンプリングに関連するドキュメントにのみ表示されます。 詳細については、「サンプル クエリ 」を参照してください。

バージョン 7.0 で追加

$currentOp.startTime

クエリのサンプリングが開始された時刻。

このフィールドは、クエリ サンプリングに関連するドキュメントにのみ表示されます。 詳細については、「サンプル クエリ 」を参照してください。

バージョン 7.0 で追加

$currentOp.samplesPerSecond

1 秒あたりにサンプリングするクエリの最大数。

mongos$currentOpを実行している場合にのみ報告されます。

このフィールドは、クエリ サンプリングに関連するドキュメントにのみ表示されます。 詳細については、「サンプル クエリ 」を参照してください。

バージョン 7.0 で追加

$currentOp.sampledReadsCount

サンプリングされた読み取りクエリの数

このフィールドは、クエリ サンプリングに関連するドキュメントにのみ表示されます。 詳細については、「サンプル クエリ 」を参照してください。

バージョン 7.0 で追加

$currentOp.sampledWritesCount

サンプリングされた書込み (write) クエリの数です。

このフィールドは、クエリ サンプリングに関連するドキュメントにのみ表示されます。 詳細については、「サンプル クエリ 」を参照してください。

バージョン 7.0 で追加

$currentOp.sampledReadsBytes

サンプリングされた読み取りクエリのサイズ(バイト単位)。

レプリカセットでは、これはmongodごとに報告されます。

シャーディングされたクラスターでは、 --shardsvr mongodについてのみ報告されます。

このフィールドは、クエリ サンプリングに関連するドキュメントにのみ表示されます。 詳細については、「サンプル クエリ 」を参照してください。

バージョン 7.0 で追加

$currentOp.sampledWritesBytes

サンプリングされた書込み (write) クエリのサイズ(バイト単位)。

レプリカセットでは、これはmongodごとに報告されます。

シャーディングされたクラスターでは、 --shardsvr mongodについてのみ報告されます。

このフィールドは、クエリ サンプリングに関連するドキュメントにのみ表示されます。 詳細については、「サンプル クエリ 」を参照してください。

バージョン 7.0 で追加

戻る

$count