Docs Menu
Docs Home
/ /

getMore (comando de base de datos)

getMore

Úselo con comandos que devuelven un cursor, como por ejemplo: find aggregatey, para devolver los siguientes lotes de documentos desde un 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. Número máximo de documentos devueltos por lote.

Si batchSize no está configurado, getMore devuelve hasta 16 mebibytes (MiB) por cada lote. Si batchSize está configurado, getMore devuelve el menor de batchSize documentos o 16 MiB.

maxTimeMS

non-negative integer

Opcional.

Especifica cuánto tiempo espera el servidor a que haya nuevos documentos que coincidan con una consulta de cursor rastreable en una colección limitada. maxTimeMS en un getMore para un awaitData cursor rastreable es equivalente maxAwaitTimeMS() a.

Los controladores establecen este valor solo para cursores rastreables en colecciones limitadas donde awaitData es true. De lo contrario, el comando que crea el cursor establece maxTimeMS como el límite de tiempo acumulativo para la operación inicial y todas las operaciones getMore subsiguientes. Para cursores rastreables con awaitData establecido en true, se cumple lo siguiente:

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

  • maxTimeMS en getMore specify el máximo de tiempo que MongoDB espera para que se inserten nuevos documentos en la colección con tamaño fijo para ese comando específico getMore.

  • maxTimeMS se establece de manera individual por el controlador para cada llamada a getMore.

MongoDB finaliza las operaciones que superan su límite de tiempo utilizando el mismo mecanismo que, pero solo en db.killOp() los puntos de interrupción designados.

  • No puedes establecer maxTimeMS al llamar a getMore en un cursor no arrastable. En su lugar, establece el valor usando maxTimeMS() cuando crees el 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.

  • Se puede establecer u omitir maxTimeMS para cada llamada a getMore, y no se tiene que usar 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 y 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, incluyendo 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 campo postBatchResumeToken se puede usar con la $changeStream pipeline para iniciar o reanudar un flujo de cambios a partir de este punto.

"ok"

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

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

  • $clusterTime

  • operationTime

Consulta la Respuesta de db.runCommand() para más detalles.

Si la autenticación está habilitada, solo puedes ejecutar getMore en los cursores que hayas creado.

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

Para 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 puedes 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 getMore se registra como una slow query, los campos queryHash y planCacheKey se añaden al mensaje del registro de slow queries y al mensaje del registro del perfilador.

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