In MongoDB-cursormethoden (d.w.z. bij gebruik van find()
) zoals limit
, sort
, skip
kan in elke volgorde worden toegepast => volgorde maakt niet uit. Een find()
geeft een cursor terug waarop wijzigingen zijn toegepast. Sorteren gebeurt altijd vóór de limiet, ook wordt overslaan vóór de limiet gedaan. Dus met andere woorden, de volgorde is:sorteer -> overslaan -> limiet .
Aggregatieframework retourneert geen DB-cursor. In plaats daarvan retourneert het een document met aggregatieresultaten. Het werkt door tussentijdse resultaten te produceren bij elke stap van de pijplijn en dus is de volgorde van bewerkingen er echt toe.
Ik denk dat MongoDB de volgorde voor cursormodificatiemethoden niet ondersteunt vanwege de manier waarop het intern is geïmplementeerd.
U kunt niet pagineren op een resultaat van een aggregatieraamwerk, omdat er maar één document is met alleen resultaten. U kunt nog steeds pagineren op een gewone zoekopdracht door overslaan en beperken te gebruiken, maar het is beter om een bereikquery te gebruiken vanwege de efficiëntie van het gebruik van een index.
UPDATE:
Sinds v2.6 retourneert Mongo-aggregatieframework een cursor in plaats van een enkel document. Vergelijk:v2.4 en v2.6 .