Generelt, ja. Hvis du har et monotont felt, ideelt set et indekseret felt, kan du simpelthen gå langs det. For eksempel, hvis du bruger felter af typen ObjectId
som primær nøgle, eller hvis du har en CreatedDate
eller noget, du kan simpelthen bruge en $lt
forespørgsel, tag et fast antal elementer, og forespørg derefter igen med $lt
af den mindste _id
eller CreatedDate
du stødte på i den forrige batch.
Vær forsigtig med streng monoton adfærd kontra ikke-streng monoton adfærd:Du skal muligvis bruge $lte
hvis nøglerne ikke er strenge, så undgå at gøre ting to gange på duperne. Siden _id
feltet er unikt, ObjectIds
er altid strengt monotone.
Hvis du ikke har sådan en nøgle, er tingene lidt mere tricky. Du kan stadig iterere 'langs indekset' (uanset indeks, det være sig et navn, en hash, en UUID, guide osv.). Det fungerer lige så godt, men det er svært at lave snapshots, fordi du aldrig ved, om det resultat, du lige har fundet, blev indsat, før du begyndte at traversere, eller ej. Når dokumenter indsættes i begyndelsen af gennemgangen, vil de også blive savnet.