MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

MongoDB:não pode usar um cursor para percorrer todos os dados


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.