Menu Docs
Página inicial do Docs
/
Manual do MongoDB
/ / /

pegue mais

Nesta página

  • Definição
  • Compatibilidade
  • Sintaxe
  • Campos de comando
  • Saída
  • Comportamento
  • Saiba mais
getMore

Use em conjunto com comandos que retornam um cursor. Por exemplo, find aggregatepara retornar lotes subsequentes de documentos apontados atualmente pelo 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

O identificador do cursor.

collection

string

O nome da collection sobre a qual o cursor está operando.

batchSize

número inteiro positivo

Opcional. O número de documentos a retornar no lote.

Se o batchSize não estiver configurado, o getMore retorna até 16 megabytes de dados. Se batchSize estiver configurado, getMore retorna 16 megabytes de dados ou documentos batchSize, o que for menor.

maxTimeMS

non-negative integer

Opcional.

Especifica o tempo máximo para o servidor esperar por novos documentos que correspondam a uma query de cursor tailable em uma capped collection. maxTimeMS em um getMore para um cursor awaitData tailable é considerado o mesmo que maxAwaitTimeMS(). Os drivers só definirão esse valor em getMore para um cursor tailable em uma capped collection com awaitData definido como true. Caso contrário, o comando que cria o cursor define maxTimeMS, que é o tempo máximo que a operação inicial e quaisquer operações getMore subsequentes podem gastar cumulativamente na execução da query. Para cursores tailable com awaitData definido como true, o seguinte é verdadeiro:

  • Se nenhum valor for fornecido, o tempo de espera tem como padrão 1 (1000 milissegundos).

  • maxTimeMS em getMore especifica a quantidade máxima de tempo que o MongoDB espera para que novos documentos sejam inseridos na collection limitada para esse comando getMore específico.

  • maxTimeMS é definido individualmente pelo driver para cada chamada para getMore.

O MongoDB encerra as operações que excedem o limite de tempo alocado usando o mesmo mecanismo de db.killOp(). O MongoDB só encerra uma operação em um de seus pontos de interrupção designados.

  • Você não pode definir maxTimeMS ao chamar getMore em um cursor não tailable. Em vez disso, defina-o usando maxTimeMS() ao criar o cursor.

  • Para usar getMore com maxTimeMS em um cursor tailable, habilite awaitData ao criar o cursor usando cursor.tailable().

  • A configuração de maxTimeMS no comando que cria um cursor apenas define o limite de tempo para essa operação. Use getMore para definir um limite para operações adicionais.

  • Você pode definir ou omitir maxTimeMS para cada chamada para getMore e não precisa usar o mesmo valor.

  • Em um cursor tailable, um tempo limite em getMore retém os documentos acumulados no cursor antes da ocorrência do tempo limite. Para um cursor não tailable, um tempo limite gera um erro.

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).

Se omitido, getMore herda qualquer comment definido no comando find ou aggregate de origem.

O comando retorna um documento que contém as informações do cursor, bem como o próximo lote.

Por exemplo, executar o getMore em um cursor criado por uma operação find em um cluster fragmentado retorna um documento semelhante a esta saída:

{
"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

Contém as informações do cursor, incluindo a ID do cursor, bem como o nextBatch dos documentos.

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 find comando inicial, mas um ou mais fragmentos ficarem indisponíveis para getMore comandos subsequentes, somente os getMore comandos executados enquanto os fragmentos não estiverem disponíveis incluirão partialResultsReturned em sua saída .

O campo postBatchResumeToken pode ser utilizado com o pipeline $changeStream para iniciar ou retomar um fluxo de alteração a partir deste ponto.

"ok"

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

Além desses campos, a resposta db.runCommand() inclui as seguintes informações para conjuntos de réplicas e clusters fragmentados:

  • $clusterTime

  • operationTime

Para obter mais informações, consulte resposta de db.runCommand().

Se a autenticação estiver habilitada, você somente poderá executar getMore em cursores que você criou.

Para cursores criados dentro de uma sessão, não é possível fazer chamadas getMore fora da sessão.

Da mesma forma, para cursores criados fora de uma sessão, você não pode chamar getMore dentro de uma sessão.

Para transações com vários documentos:

  • Para cursores criados fora de uma transação, não é possível chamar getMore dentro da transação.

  • Para cursores criados em uma transação, você não pode chamar getMore fora da transação.

A partir do MongoDB 5.1, quando um comando getMore é registrado como uma query lenta, os campos queryHash e planCacheKey são adicionados à mensagem de log de consulta lenta e à mensagem de log do perfil.

A partir do MongoDB 8.0, o campo queryHash pré-existente é renomeado para planCacheShapeHash. Se você estiver usando uma versão anterior do MongoDB , verá queryHash em vez de planCacheShapeHash.

Voltar

Obter último erro