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
/ /
Consulta & guardar

getMore

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 getMore tiene la siguiente forma:

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 de documentos a devolver en el lote.

Si batchSize no está configurado, getMore devuelve hasta 16 megabytes de datos. Si batchSize está configurado, getMore devuelve el menor entre 16 megabytes de datos o batchSize documentos.

maxTimeMS

non-negative integer

Opcional.

Especifica el tiempo máximo que el servidor debe esperar nuevos documentos que coincidan con una query de cursor con seguimiento en una colección con tamaño fijo. Los drivers solo establecerán este valor en getMore para un cursor con seguimiento en una colección con tamaño fijo con awaitData configurada 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 getMore posterior, pueden pasar ejecutando la query de forma acumulativa. Para cursores con seguimiento con awaitData configurados en true, se aplica 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" : 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")
}
}
}
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.

Volver

getLastError

En esta página