AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
Docs Menu

getMore (データベースコマンド)

getMore

find や aggregate など、カーソルを返すコマンドと組み合わせて使用し、カーソルから次のドキュメントバッチを返します。

このコマンドは、次の環境でホストされている配置で使用できます。

  • MongoDB Atlas: The fully managed service for MongoDB deployments in the cloud

注意

This command is supported in all MongoDB Atlas clusters. For information on Atlas support for all commands, see Unsupported Commands.

  • MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン

  • MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン

このコマンドの構文は、次のとおりです。

db.runCommand(
{
getMore: <long>,
collection: <string>,
batchSize: <int>,
maxTimeMS: <int>,
comment: <any>
}
)

このコマンドは、次のフィールドを受け入れます。

フィールド
タイプ
説明

getMore

long

カーソル識別子。

collection

string

カーソルが操作するコレクションの名前。

batchSize

正の整数

任意.各バッチするで返されるドキュメントの最大数。

batchSize が設定されていない場合、getMore はバッチごとに最大 16 メビバイト(MiB)を返します。batchSize が設定されている場合、getMore は batchSize ドキュメントまたは 16 MiB のうち少ない方を返します。

maxTimeMS

non-negative integer

任意。

上限付きコレクション の 追尾可能 (tailable) カーソル クエリに一致する新しいドキュメントをサーバーが待機する時間を指定します。追尾可能な awaitData カーソル用の getMore にある maxTimeMS は、maxAwaitTimeMS() と同じです。

ドライバーがこの値を設定するのは、awaitData が true である上限付きコレクションの追尾可能 (tailable) カーソルに対してのみです。それ以外の場合、カーソルを作成するコマンドは、初期操作とそれ以降のすべての getMore 操作の累積時間制限として maxTimeMS を設定します。awaitData が true に設定されている追尾可能 (tailable) カーソルの場合、次のようになります。

  • 値が指定されていない場合、待機時間はデフォルトで 1(1000 ミリ秒)になります。

  • maxTimeMS getMore では、特定の getMore コマンドの上限付きコレクションに新しいドキュメントが挿入されるまで、MongoDB が待機する最大時間を指定します。

  • maxTimeMS は getMore を呼び出すたびに、ドライバーによって個別に設定されます。

MongoDB は、db.killOp() と同じメカニズムを使用して時間制限を超えた操作を終了しますが、指定された割り込みポイントでのみ終了されます。

  • 追尾可能 (tailable) ではないカーソルで getMore を呼び出すときは、maxTimeMS を設定することはできません。代わりに、カーソルを作成するときに maxTimeMS() を使用して設定します。

  • 追尾可能 (tailable) カーソルで getMore を maxTimeMS と共に使用するには、cursor.tailable() を使用してカーソルを作成するときに awaitData を有効にします。

  • カーソルを作成するコマンドに maxTimeMS を設定すると、その操作の時間制限のみが設定されます。getMore を使用して、以降の操作に制限を設定します。

  • getMore の呼び出しごとに maxTimeMS を設定または省略することができ、同じ値を使用する必要はありません。

  • 追尾可能 (tailable) カーソルの場合、getMore をタイムアウトすると、カーソルでタイムアウトが発生する前に蓄積されたドキュメントが保持されます。追尾可能 (tailable) ではないカーソルの場合、タイムアウトによってエラーが発生します。

comment

any

任意。このコマンドに添付するユーザー指定のコメント。設定すると、このコメントは以下の場所にこのコマンドの記録と合わせて表示されます。

コメントには、有効な BSON 型(string, integer, object, array など)を使用できます。

省略した場合、getMoreは、元の find または aggregate コマンドで設定されたあらゆる comment を継承します。

このコマンドは、カーソル情報と次のバッチを含むドキュメントを返します。

たとえば、シャーディングされたクラスターで find 操作によって作成されたカーソルで getMore を実行すると、次の出力のようなドキュメントが返されます。

{
"cursor" : {
"id" : Long("678960441858272731"),
"ns" : "test.contacts",
"nextBatch" : [
{
"_id" : ObjectId("5e8e501e1a32d227f9085857"),
"zipcode" : "220000"
}
],
"partialResultsReturned" : true,
"postBatchResumeToken": "< Resume Token >"
},
"ok" : 1,
"operationTime" : Timestamp(1586385239, 2),
"$clusterTime" : {
"clusterTime" : Timestamp(1586385239, 2),
"signature" : {
"hash" : BinData(0,"lLjejeW6AQGReR9x1PD8xU+tP+A="),
"keyId" : Long("6813467763969884181")
}
}
}
フィールド
説明

cursor

カーソル ID やドキュメントの nextBatch などのカーソル情報が含まれます。

If find (or subsequent getMore commands) returns partial results because the queried shard(s) aren't available, the find output includes a partialResultsReturned indicator field. If the queried shards are available for the initial find command, but one or more shards become unavailable for subsequent getMore commands, only the getMore commands that run while the shards aren't available include partialResultsReturned in their output.

postBatchResumeToken フィールドを $changeStream パイプラインと使用すると、この時点から変更ストリームを開始または再開できます。

MongoDB 9.0 以降では、internalOperationResponseMaxMS パラメータを設定することで、コマンドがバッチする前、または変更ストリームがoplogの末尾に到達する前に、長い変更ストリームoplogスキャン中に更新された postBatchResumeToken を返すことができます。

"ok"

コマンドが成功(1)したか失敗(0)したかを示します。

これらのフィールドに加えて、db.runCommand() 応答にはレプリカセットとシャーディングされたクラスターに関する次の情報が含まれています。

  • $clusterTime

  • operationTime

詳細については、db.runCommand() レスポンスを参照してください。

認証が有効になっている場合は、作成したカーソルに対してのみ getMore を実行できます。

セッション内で作成されたカーソルの場合、セッション外で getMore を呼び出すことはできません。

セッション外で作成されたカーソルの場合、セッション内で getMore を呼び出すことはできません。

マルチドキュメントトランザクションの場合は次のとおりです。

  • For cursors created outside of a transaction, you cannot call getMore inside the transaction.

  • For cursors created in a transaction, you cannot call getMore outside the transaction.

MongoDB 8.2以降では、カーソル識別子は、指定されたcollectionで操作するカーソルの名前と一致する必要があります。一致するカーソルが存在しない場合、getMoreはエラーを返します。

Starting in MongoDB 5.1, when a getMore command is logged as a slow query, the queryHash and planCacheKey fields are added to the slow query log message and the profiler log message.

MongoDB 8.0 以降では、既存の queryHashフィールドはplanCacheShapeHash という名前の新しいフィールドに重複します。 以前のバージョンのMongoDBを使用している場合は、queryHashフィールドのみが表示されます。 今後のMongoDBバージョンでは、非推奨の queryHashフィールドが排除されます。代わりに planCacheShapeHashフィールドを使用する必要があります。