Docs Menu
Docs Home
/ /

getMore (comando de base de datos)

getMore

Úselo junto con comandos que devuelven un cursor. Por ejemplo, find aggregatey, para devolver lotes subsiguientes de documentos a los que apunta actualmente el cursor.

Este comando está disponible en implementaciones alojadas en los siguientes entornos:

  • MongoDB Atlas: El servicio totalmente gestionado para implementaciones de MongoDB en la nube

Nota

Este comando es compatible con todos los clústeres de MongoDB Atlas. Para obtener información sobre el soporte de Atlas para todos los comandos, consulte Comandos no compatibles.

  • MongoDB Enterprise: La versión basada en suscripción y autogestionada de MongoDB

  • MongoDB Community: La versión de MongoDB con código fuente disponible, de uso gratuito y autogestionada.

El comando tiene la siguiente sintaxis:

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

El comando acepta los siguientes campos:

Campo
Tipo
Descripción

getMore

long

El identificador del cursor.

collection

string

El nombre de la colección sobre la que está operando el cursor.

batchSize

entero positivo

Opcional. El número máximo de documentos que se pueden devolver en cada lote de un resultado de query.

Si no se configura batchSize, getMore devuelve hasta 16 mebibytes (MiB) de datos en todos los lotes subsiguientes. Si se configura batchSize, getMore devuelve el menor de los siguientes valores: batchSize documentos o 16 MiB de documentos.

maxTimeMS

non-negative integer

Opcional.

Especifica el tiempo máximo que el servidor espera nuevos documentos que coinciden con una consulta de cursor adaptable en una colección limitada. maxTimeMS en un getMore para un awaitData cursor adaptable se considera igual que. Los controladores solo establecerán este valor maxAwaitTimeMS() en getMore para un cursor adaptable en una colección limitada con awaitData establecido true en. De lo contrario, el comando que crea el cursor maxTimeMS establece, que es el tiempo máximo que la operación inicial y cualquier getMore operación posterior pueden dedicar acumulativamente a ejecutar la consulta. Para cursores adaptables con awaitData establecido true en, se cumple lo siguiente:

  • Si no se proporciona ningún valor, el tiempo de espera predeterminado es 1 (1000 milisegundos).

  • maxTimeMS en getMore especifica la cantidad máxima de tiempo que MongoDB espera para que se inserten nuevos documentos en la colección limitada para ese comando getMore específico.

  • maxTimeMS lo establece individualmente el controlador para cada llamada a getMore.

MongoDB finaliza las operaciones que exceden su límite de tiempo asignado utilizando el mismo mecanismo que db.killOp(). MongoDB solo termina una operación en uno de sus puntos de interrupción designados.

  • No se puede establecer maxTimeMS al llamar getMore a en un cursor no rastreable. En su lugar, configúrelo usando al crear el maxTimeMS() cursor.

  • Para usar getMore con maxTimeMS en un cursor adaptable, habilite awaitData cuando cree el cursor cursor.tailable() usando.

  • Al establecer maxTimeMS en el comando que crea un cursor, solo se establece el límite de tiempo para esa operación. Use getMore para establecer un límite para operaciones posteriores.

  • Puede establecer u omitir maxTimeMS para cada llamada a getMore, y no es necesario que utilice el mismo valor.

  • En el caso de un cursor rastreable, un tiempo de espera en getMore conserva los documentos acumulados antes de que se agotara el tiempo de espera en el cursor. En el caso de un cursor no rastreable, un tiempo de espera genera un error.

comment

any

Opcional. Un comentario proporcionado por el usuario para adjuntar a este comando. Una vez configurado, este comentario aparece junto a los registros de este comando en las siguientes ubicaciones:

Un comentario puede ser de cualquier tipo BSON válido (string, objeto, arreglo, etc.).

Si se omite, getMore hereda cualquier comment establecida en el comando de origen find o aggregate.

El comando devuelve un documento que contiene la información del cursor así como el siguiente lote.

Por ejemplo, ejecutar getMore en un cursor creado por una find operación en un clúster fragmentado, devuelve un documento similar a este resultado:

{
"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")
}
}
}
Campo
Descripción

cursor

Contiene la información del cursor, incluido el ID del cursor y el nextBatch de los documentos.

Si find (o los comandos getMore subsiguientes) devuelven resultados parciales porque las particiones consultadas no están disponibles, la salida de búsqueda incluye un campo indicador partialResultsReturned. Si las particiones consultadas están disponibles para el comando inicial de find, pero una o más particiones dejan de estar disponibles para los comandos de getMore posteriores, solo los comandos de getMore que se ejecutan mientras las particiones no están disponibles incluyen partialResultsReturned en su salida.

El postBatchResumeToken campo se puede utilizar con el pipeline para iniciar o reanudar un flujo de cambios desde este $changeStream punto.

"ok"

Indica si el comando ha tenido éxito (1) o ha fallado (0).

Además de estos campos, la respuesta incluye la siguiente información para conjuntos de réplicas y clústeres db.runCommand() fragmentados:

  • $clusterTime

  • operationTime

Consulte la respuesta de db.runCommand() para obtener más detalles.

Si la autenticación está habilitada, solo podrá ejecutar getMore contra los cursores que haya creado.

Para los cursores creados dentro de una sesión, no se puede llamar a getMore fuera de la sesión.

De manera similar, para los cursores creados fuera de una sesión, no puedes llamar a getMore dentro de una sesión.

Para transacciones multidocumento:

  • Para los cursores creados fuera de una transacción, no se puede llamar a getMore dentro de la transacción.

  • Para los cursores creados en una transacción, no se puede llamar a getMore fuera de la transacción.

A partir de MongoDB 8.2, el identificador del cursor debe coincidir con el nombre del cursor que opera en el collection especificado. Si el collection no tiene un cursor con el identificador especificado, getMore devuelve un error.

A partir de MongoDB,5.1 cuando un comando se getMore registra como una consulta lenta, los campos queryHash y planCacheKey se agregan al mensaje de registro de consulta lenta y al mensaje de registro del generador de perfiles.

A partir de MongoDB 8.0, el campo queryHash existente se duplica en un nuevo campo llamado planCacheShapeHash. Si estás utilizando una versión anterior de MongoDB, solo verás el campo queryHash. Las versiones futuras de MongoDB removerán el campo queryHash obsoleto y deberás utilizar el campo planCacheShapeHash en su lugar.

Volver

findAndModify

En esta página