Docs Menu
Docs Home
/
データベース マニュアル
/ / /

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 メビバイト(MiB)のデータを返します。batchSize が設定されている場合、getMorebatchSize 件のドキュメントまたは 16 メビバイト(MiB)相当のドキュメントのうち、少ない方を返します。

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" : 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 などのカーソル情報が含まれます。

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

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

"ok"

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

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

  • $clusterTime

  • operationTime

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

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

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

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

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

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

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

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

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

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

戻る

findAndModify

項目一覧