Em geral, sim. Se você tem um campo monotônico, idealmente um campo indexado, você pode simplesmente caminhar por ele. Por exemplo, se você estiver usando campos do tipo
ObjectId
como chave primária ou se você tiver uma CreatedDate
ou algo assim, você pode simplesmente usar um $lt
consulta, pega um número fixo de elementos e consulta novamente usando $lt
do menor _id
ou CreatedDate
você encontrou no lote anterior. Tenha cuidado com o comportamento monotônico estrito versus o comportamento monotônico não estrito:talvez seja necessário usar
$lte
se as chaves não forem rígidas, evite fazer as coisas duas vezes nos dupes. Desde o _id
campo é único, ObjectIds
são sempre estritamente monotônicos. Se você não tiver essa chave, as coisas são um pouco mais complicadas. Você ainda pode iterar 'ao longo do índice' (qualquer índice, seja um nome, um hash, um UUID, Guid, etc.). Isso funciona muito bem, mas é difícil fazer snapshots, porque você nunca sabe se o resultado que acabou de encontrar foi inserido antes de começar a percorrer ou não. Além disso, quando os documentos são inseridos no início da travessia, eles serão perdidos.