Você deve ter muito cuidado ao iterar em uma coleção grande (milhares de registros) do MongoDB enquanto atualiza cada documento ao mesmo tempo. Porquê isso?
A classificação padrão do MongoDB é $natural
, o que significa que os documentos são retornados na ordem em que estão fisicamente presentes no disco. Ao atualizar o iterador atual, ele ultrapassará seu limite e, portanto, será movido para um novo espaço livre no final do arquivo. Eventualmente, você acabará reprocessando aquele documento quando “o que deveria ter sido o fim da coleção” for atingido.
A solução rápida é para sort
documentos em seu _id
campo.
db.collections.find({ ... }).sort({ _id: 1 })