Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

getMore (comando de base de datos)

getMore

Utilícelo junto con comandos que devuelvan un cursor. Por ejemplo, find y aggregate, para devolver los siguientes lotes de documentos apuntados actualmente por 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 opera el cursor.

batchSize

Número entero positivo

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

Si batchSize no está configurado, getMore devuelve hasta 16 mebibytes (MiB) de datos en todos los lotes posteriores. Si batchSize está configurado, getMore devuelve lo que sea menor entre batchSize documentos o el equivalente a 16 MiB de documentos.

maxTimeMS

non-negative integer

Opcional.

Especifica el tiempo máximo que el servidor debe esperar que nuevos documentos coincidan con una cursor con seguimiento query en una colección con tamaño fijo. maxTimeMS en un getMore para un cursor awaitData tailable se considera igual que maxAwaitTimeMS(). Los drivers solo establecerán este valor en getMore para un cursor con seguimiento en una colección con tamaño fijo con awaitData establecido en true. De lo contrario, el comando que crea el cursor establece maxTimeMS, que es la cantidad máxima de tiempo que la operación inicial y cualquier operación subsiguiente getMore pueden invertir de manera acumulativa en la ejecución de la query. Para cursores con seguimiento con awaitData establecido en true, 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 con seguimiento, activa awaitData cuando crees el cursor utilizando cursor.tailable().

  • Configurar maxTimeMS en el comando que crea un cursor sólo establece el límite de tiempo para esa operación. Usa getMore para establecer un límite en las operaciones posteriores.

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

  • Para un cursor con seguimiento, un tiempo de espera en getMore retiene los documentos acumulados antes de que se produzca el tiempo de espera en el cursor. Para un cursor con seguimiento, 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 forma similar, para los cursores creados fuera de una sesión, no se puede 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,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.

Iterar un cursor en mongosh

Volver

findAndModify

En esta página