I allmänhet, ja. Om du har ett monotont fält, helst ett indexerat fält, kan du helt enkelt gå längs det. Om du till exempel använder fält av typen ObjectId
som primärnyckel eller om du har ett CreatedDate
eller något, du kan helt enkelt använda en $lt
fråga, ta ett fast antal element och fråga sedan igen med $lt
av det minsta _id
eller CreatedDate
du stötte på i föregående batch.
Var försiktig med strikt monotont beteende kontra icke-strikt monotont beteende:Du kanske måste använda $lte
om nycklarna inte är strikta, undvik då att göra saker två gånger på dupes. Sedan _id
fältet är unikt, ObjectIds
är alltid strikt monotona.
Om du inte har en sådan nyckel är det lite mer knepigt. Du kan fortfarande iterera "längs indexet" (vilket index än, oavsett om det är ett namn, en hash, en UUID, guide, etc.). Det fungerar lika bra, men det är svårt att göra ögonblicksbilder, eftersom du aldrig vet om resultatet du just hittade infogades innan du började korsa eller inte. Dessutom, när dokument infogas i början av genomgången, kommer de att missas.