allowDiskUse() (Permitir Disco para Ordenação)
Última atualização: 2026-10-09
allowDiskUse() (Permitir Disco para Ordenação)
allowDiskUse() permite que um cursor despeje em disco para operações de bloqueio como sort() que exigem muita memória: `db.users.find().sort({ age: -1 }).allowDiskUse()`. Ordenações acima do limite de memória de 100MB geram erro por padrão; com esta flag, resultados intermediários vão para arquivos temporários. Ele salva ordenações e agregações enormes ao custo de desempenho de E/S de disco.
| Categoria | Cursor |
|---|---|
| Versão do MongoDB | 1.0+ |
| Idioma do Exemplo | mongosh (Shell) |
📝 Sintaxe
db.<collection>.find(<filter>).sort(<sortKey>).allowDiskUse()
Retorno:O cursor com derramamento em disco habilitado (encadeável).
▶ Exemplo
Execute os comandos abaixo no seu mongosh local (requer um mongod em execução):
// allowDiskUse: permite despejo em disco para uma ordenação enorme
const result = db.logs.find({ level: 'error' })
.sort({ timestamp: -1 })
.allowDiskUse()
.toArray()
result.length
Saída:
1200
📌 Notas
- O limite de memória padrão por ordenação é 100MB; acima disso gera erro
- Com despejo em disco, resultados intermediários vão para arquivos temporários — mais lento
- O pipeline de agregação tem uma opção allowDiskUse equivalente
🏷️ Tags Relacionados
💡 Casos Relacionados
Mais casos práticos em breve.
📚 Tutoriais Relacionados
❓ Perguntas Frequentes
QQuando preciso de allowDiskUse?
AHabilite-o quando uma ordenação ou agregação exceder o limite de memória de 100MB e gerar erro, ex.: ordenar uma coleção enorme inteira.
QO allowDiskUse prejudica o desempenho?
ASim — despejos em disco são muito mais lentos que trabalho puramente em memória; prefira ordenações respaldadas por índice para evitá-los.
QO allowDiskUse é o mesmo que a opção de agregação?
AMesma semântica — despejo em disco para intermediários; o método de cursor serve a find().sort(), a opção de agregação serve a aggregate().