Menu Docs
Página inicial do Docs
/
Manual do banco de dados
/ / /

cursor.allowDiskUse() (método mongosh)

cursor.allowDiskUse()

Importante

Método mongosh

Esta página documenta um método mongosh. Esta não é a documentação de um driver de idioma específico, como Node.js.

Para drivers de API do MongoDB, consulte a documentação do driver do MongoDB específica da linguagem.

Use allowDiskUse() para permitir ou proibir a gravação de arquivos temporários no disco quando um estágio do pipeline exceder o limite de 100 megabytes. A partir do MongoDB 6.0, as operações que exigem mais de 100 megabytes de memória gravam dados automaticamente em arquivos temporários por padrão.

allowDiskUse() tem o seguinte formato:

db.collection.find(<match>).sort(<sort>).allowDiskUse()

Consulte Uso de Classificação e Índice para mais informações sobre operações de classificação na memória.

Esse método 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

A partir do MongoDB 6.0, os estágios do pipeline que exigem mais de 100 megabytes de memória para execução gravam arquivos temporários no disco por padrão.

Observação

Antes do MongoDB 6.0, .allowDiskUse(false) e .allowDiskUse(true) têm o mesmo efeito. No MongoDB 6.0, tanto o mongosh quanto o shell mongo legado se comportam da seguinte maneira:

Se allowDiskUseByDefault for true (este é o padrão):

  • .allowDiskUse() não tem efeito adicional

  • .allowDiskUse(true) não tem efeito adicional

  • .allowDiskUse(false) proíbe a query de gravar arquivos temporários no disco

Se allowDiskUseByDefault for false:

  • .allowDiskUse() permite gravar arquivos temporários no disco

  • .allowDiskUse(true) permite gravar arquivos temporários no disco

  • .allowDiskUse(false) não tem efeito adicional

cursor.allowDiskUse() não tem efeito em operações de classificação respondidas usando um índice ou operações de classificação não indexadas ("na memória") que exigem menos de 100 megabytes de memória. Para obter documentação mais completa sobre ordenações na memória e uso de índices de ordenação, consulte Uso de ordenação e índice.

Para verificar se o MongoDB deve executar uma ordenação na memória, acrescente cursor.explain() à query e verifique os resultados explicativos. Se o plano de query contiver um estágio SORT, o MongoDB deverá executar uma operação de classificação na memória sujeita ao limite de memória de 100 megabytes.

Considere uma coleção sensors com apenas o índice padrão em _id. A coleção contém documentos semelhantes aos seguintes:

{
"sensor-name" : "TEMP-21425",
"sensor-location" : "Unit 12",
"reading" : {
"timestamp" : Timestamp(1580247215, 1),
"value" : 212,
"unit" : "Fahrenheit"
}
}

A seguinte operação inclui um cursor.sort() no campo reading.timestamp. A operação também passa false para cursor.allowDiskUse() para proibir a query de gravar arquivos temporários no disco.

db.sensors.find({"sensor-location" : "Unit 12"}).
sort({"reading.timestamp" : 1}).
allowDiskUse(false)

Como o reading.timestamp não está incluído em um índice, o MongoDB deve executar uma operação de classificação na memória para retornar os resultados na ordem de classificação solicitada. Ao especificar cursor.allowDiskUse(false), o MongoDB não pode processar a operação de classificação se ela exigir mais de 100 megabytes de memória do sistema. Se a operação exigir mais de 100 megabytes de memória do sistema, o MongoDB retornará um erro.

Voltar

cursor.addOption

Nesta página