sql >> Database teknologi >  >> NoSQL >> MongoDB

MongoDB:kan ikke bruge en markør til at iterere gennem alle data

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.




  1. mongoose brugerdefineret validering ved hjælp af 2 felter

  2. Sådan får du det korte månedsnavn i SQL

  3. Mongoengine er meget langsom på store dokumenter sammenlignet med indfødt pymongo-brug

  4. Korrekt måde at bruge Redis Connection Pool i Python