sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB:kan inte använda en markör för att iterera genom all data

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.




  1. Hur sorterar man två åkrar med mangust?

  2. Mongodb aggregeringsuppslagning med villkor

  3. $in mongoDB operator med _id i perl

  4. använder akka-strömmar för att gå över mongosamlingen