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

getMore

項目一覧

  • 定義
  • 互換性
  • 構文
  • コマンドフィールド
  • 出力
  • 動作
  • 詳細
getMore

カーソルを返すコマンドと組み合わせて使用します。たとえば、findaggregate は、現在カーソルが指しているドキュメントの後続のバッチを返します。

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

  • MongoDB Atlas はクラウドでの MongoDB 配置のためのフルマネージド サービスです

注意

このコマンドは、すべての MongoDB Atlas クラスターでサポートされています。すべてのコマンドに対する Atlas のサポートについては、「サポートされていないコマンド」を参照してください。

  • 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 MB のデータを返します。batchSize が設定されている場合、 getMore は 16 MB のデータまたは batchSize ドキュメントのうち小さい方を返します。

maxTimeMS

non-negative integer

任意。

上限付きコレクション追尾可能 (tailable) カーソル クエリに一致する新しいドキュメントをサーバーが待機する最大時間を指定します。追尾可能な awaitData カーソル用の getMore にある maxTimeMS は、maxAwaitTimeMS() と同じとみなされます。ドライバーがこの値を getMore に設定するのは、awaitDatatrue に設定された上限付きコレクションの追尾可能 (tailable) カーソルに対してのみです。それ以外の場合、カーソルを作成するコマンドは maxTimeMS を設定します。これは最初の操作での最大時間で、それ以降のあらゆる getMore 操作でクエリの累積実行に費やすことができます。awaitDatatrue に設定されている追尾可能 (tailable) カーソルの場合、次のようになります。

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

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

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

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

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

  • 追尾可能 (tailable) カーソルで getMoremaxTimeMS と共に使用するには、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" : NumberLong("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" : NumberLong("6813467763969884181")
}
}
}
フィールド
説明

cursor

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

クエリされたシャードが使用できないために、 find(または後続のgetMore コマンド)によって部分的な結果が返される場合、検索出力には partialResultsReturnedインジケーターフィールドが含まれます。クエリされたシャードが最初の コマンドで使用できるが、後続のfindgetMore コマンドで 1 つ以上のシャードが使用できなくなった場合、シャードが使用できないときに実行される コマンドのみ、その出力に が含まれます。getMore partialResultsReturned

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

"ok"

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

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

  • $clusterTime

  • operationTime

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

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

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

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

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

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

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

MongoDB 5.1 以降、getMore コマンドが スロー クエリ としてログに記録されると、queryHash フィールドと planCacheKey フィールドが スロー クエリ ログ メッセージプロファイラー ログ メッセージ に追加されます。

MongoDB 8.0以降、既存のqueryHashフィールドの名前がplanCacheShapeHashに変更されます。 以前のバージョンの MongoDB を使用している場合は、 planCacheShapeHashではなくqueryHashが表示されます。

戻る

getLastError