Docs Menu
Docs Home
/ /
Consultar y escribir

getMore

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 getMore 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 está operando el cursor.

batchSize

entero positivo

Opcional. El número de documentos a devolver en el lote.

Si no se establece batchSize, getMore devuelve hasta 16 megabytes de datos. Si se establece batchSize, getMore devuelve 16 megabytes de datos o batchSize documentos, el valor menor.

maxTimeMS

non-negative integer

Opcional.

Especifica el tiempo máximo que el servidor espera nuevos documentos que coincidan con una consulta de cursor adaptable en una colección limitada. Los controladores solo establecerán este valor 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 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" : 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 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.

Volver

getLastError

En esta página