Menu Docs

pegue mais

getMore

Use in conjunction with commands that return a cursor. For example, find and aggregate, to return subsequent batches of documents currently pointed to by the cursor.

Esse comando está disponível em implantações hospedadas nos seguintes ambientes:

  • MongoDB Atlas: o serviço totalmente gerenciado para implantações do MongoDB na nuvem

Observação

Este comando é aceito em todos os clusters do MongoDB Atlas. Para obter informações sobre o suporte do Atlas a todos os comandos, consulte Comandos não suportados.

  • MongoDB Enterprise: a versão autogerenciada e baseada em assinatura do MongoDB

  • MongoDB Community: uma versão com código disponível, de uso gratuito e autogerenciada do MongoDB

O comando tem a seguinte sintaxe:

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

O comando aceita os seguintes campos:

Campo
Tipo
Descrição

getMore

long

The cursor identifier.

collection

string

The name of the collection over which the cursor is operating.

batchSize

positive integer

Optional. The number of documents to return in the batch.

If batchSize is not set, getMore returns up to 16 mebibytes of data. If batchSize is set, getMore returns the smaller of 16 mebibytes of data or batchSize documents.

maxTimeMS

non-negative integer

Opcional.

Specifies the maximum time for the server to wait for new documents that match a cursor tailable query on a Capped Collection. maxTimeMS on a getMore for a tailable awaitData cursor is considered the same as maxAwaitTimeMS(). Drivers will only set this value on getMore for a tailable cursor on a capped collection with awaitData set to true. Otherwise, the command that creates the cursor sets maxTimeMS, which is the maximum amount of time that the initial operation, and any subsequent getMore operations, can spend cumulatively executing the query. For tailable cursors with awaitData set to true, the following is true:

  • If no value is provided, the wait time defaults to 1 (1000 milliseconds).

  • maxTimeMS on getMore specifies the maximum amount of time MongoDB waits for new documents to be inserted into the capped collection for that specific getMore command.

  • maxTimeMS is set individually by the driver for each call to getMore.

MongoDB terminates operations that exceed their allotted time limit using the same mechanism as db.killOp(). MongoDB only terminates an operation at one of its designated interrupt points.

  • You cannot set maxTimeMS when calling getMore on a non-tailable cursor. Instead, set it using maxTimeMS() when you create the cursor.

  • To use getMore with maxTimeMS on a tailable cursor, enable awaitData when you create the cursor using cursor.tailable().

  • Contexto maxTimeMS on the command that creates a cursor only sets the time limit for that operation. Use getMore to set a limit on further operations.

  • You can set or omit maxTimeMS for each call to getMore, and you don't have to use the same value.

  • For a tailable cursor, a timeout on getMore retains the documents accumulated before the timeout occurred in the cursor. For a non-tailable cursor, a timeout raises an error.

comment

any

Opcional. Um comentário fornecido pelo usuário para anexar a este comando. Depois de definido, esse comentário aparece junto com os registros desse comando nos seguintes locais:

Um comentário pode ser qualquer tipo BSON válido (string, inteiro, objeto, array etc).

If omitted, getMore inherits any comment set on the originating find or aggregate command.

The command returns a document that contains the cursor information as well as the next batch.

For example, running getMore on a cursor created by a find operation on a sharded cluster returns a document similar to this output:

{
"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
Descrição

cursor

Contains the cursor information, including the cursor ID as well as the nextBatch of documents.

Se find (ou comandos subsequentes) retornarem resultados parciais porque os getMore shards da query não estão disponíveis, o resultado da busca incluirá um partialResultsReturned campo indicador. Se os fragmentos consultados estiverem disponíveis para o comando find inicial, mas um ou mais fragmentos ficarem indisponíveis para comandos getMore subsequentes, somente os comandos getMore executados enquanto os fragmentos não estiverem disponíveis incluirão partialResultsReturned em sua saída .

The postBatchResumeToken field can be used with the $changeStream pipeline to start or resume a change stream from this point.

"ok"

Indica se o comando foi bem-sucedido (1) ou falhou (0).

In addition to these fields, the db.runCommand() response includes the following information for replica sets and sharded clusters:

  • $clusterTime

  • operationTime

See db.runCommand() Response for details.

If Autenticação is enabled, you can only run getMore against cursors you created.

For cursors created inside a session, you cannot call getMore outside the session.

Similarly, for cursors created outside of a session, you cannot call getMore inside a session.

Para transações com vários documentos:

  • For cursors created outside of a transaction, you cannot call getMore inside the transaction.

  • For cursors created in a transaction, you cannot call getMore outside the transaction.

Starting in MongoDB 5.1, when a getMore command is logged as a slow query, the queryHash and planCacheKey fields are added to the slow query log message and the profiler log message.

A partir do MongoDB 8.0, o campo queryHash existente é duplicado em um novo campo chamado planCacheShapeHash. Se você estiver usando uma versão anterior do MongoDB , verá apenas o campo queryHash. As futuras versões do MongoDB removerão o campo queryHash obsoleto, e você precisará usar o campo planCacheShapeHash em seu lugar.