Obecně ano. Pokud máte monotónní pole, ideálně indexované pole, můžete po něm jednoduše chodit. Pokud například používáte pole typu ObjectId
jako primární klíč nebo pokud máte CreatedDate
nebo tak něco, můžete jednoduše použít $lt
dotaz, vezměte pevný počet prvků a poté dotaz znovu pomocí $lt
nejmenšího _id
nebo CreatedDate
se kterými jste se setkali v předchozí dávce.
Dávejte pozor na přísné monotónní chování vs. nepřísné monotónní chování:Možná budete muset použít $lte
pokud klíče nejsou přísné, zabraňte tomu, abyste na dupech dělali věci dvakrát. Protože _id
pole je jedinečné, ObjectIds
jsou vždy přísně monotónní.
Pokud takový klíč nemáte, věci jsou trochu složitější. Stále můžete iterovat „podle indexu“ (bez ohledu na index, ať už je to název, hash, UUID, Guid atd.). To funguje stejně dobře, ale je těžké udělat snímek, protože nikdy nevíte, zda výsledek, který jste právě našli, byl vložen předtím, než jste začali procházet, nebo ne. Pokud jsou dokumenty vloženy na začátek průchodu, budou také vynechány.