cursor.allowDiskUse()
Nesta página
Definição
cursor.allowDiskUse()
Importante
Método mongosh
Este é um método
mongosh
. Esta não é a documentação deNode.js
ou de outros métodos de driver específicos da linguagem de programação.Na maioria dos casos, os métodos
mongosh
funcionam da mesma forma que os métodos legado do shellmongo
. No entanto, alguns métodos legado não estão disponíveis emmongosh
.Para a documentação do shell legado
mongo
, consulte a documentação para a release correspondente do MongoDB Server:Para drivers da API do MongoDB, consulte a documentação do driver do MongoDB específica do idioma.
allowDiskUse()
permite que o MongoDB use arquivos temporários no disco para armazenar dados que excedam o limite de memória do sistema de megabytes 100 ao processar uma block sort . Se o MongoDB exigir o uso de mais de 100 megabytes de memória do sistema para a operação de block sort , o MongoDB retornará um erro a menos que a query especifiquecursor.allowDiskUse()
.allowDiskUse()
tem o seguinte formato:db.collection.find(<match>).sort(<sort>).allowDiskUse()
Consulte Uso de classificação e indexação para obter mais informações sobre o ordenador bloqueante.
Compatibilidade
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
Comportamento
Suporta somente classificações grandes não indexadas
cursor.allowDiskUse()
não tem efeito sobre operações de classificação respondidas usando um índice ou operações de classificação não indexadas ("bloqueio") que exigem menos de 100 megabytes de memória. Para obter uma documentação mais completa sobre block sorts e o uso de índices de classificação, consulte Uso de classificação e índice.
Para verificar se o MongoDB deve executar uma ordenação bloqueante, 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 de bloqueio sujeita ao limite de memória de 100 megabyte.
Exemplo
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 inclui o cursor.allowDiskUse()
para suportar a operação de classificação.
db.sensors.find({"sensor-location" : "Unit 12"}). sort({"reading.timestamp" : 1}). allowDiskUse()
Como o reading.timestamp
não está incluído em um índice, o MongoDB deve executar uma operação de classificação de bloqueio para retornar os resultados na ordem de classificação solicitada. Ao especificar allowDiskUse()
, o MongoDB pode processar a operação de classificação mesmo que ela exija mais de 100 megabytes de memória do sistema. Se allowDiskUse()
fosse omitido e a operação exigisse mais de 100 megabytes de memória do sistema, o MongoDB retornaria um erro.