I MongoDB markørmetoder (dvs. når du bruger find()
) som limit
, sort
, skip
kan anvendes i enhver rækkefølge => rækkefølgen er ligegyldig. En find()
returnerer en markør, hvorpå ændringerne er anvendt. Sortering udføres altid før grænse, spring udføres også før grænse. Så med andre ord er rækkefølgen:sortér -> spring over -> grænse .
Aggregationsramme returnerer ikke en DB-markør. I stedet returnerer den et dokument med resultater af aggregering. Det virker ved at producere mellemresultater på hvert trin i pipelinen, og derfor betyder rækkefølgen af operationer virkelig noget.
Jeg gætter på, at MongoDB ikke understøtter rækkefølge for markørmodifikatormetoder på grund af den måde, det er implementeret internt på.
Du kan ikke paginere på et resultat af aggregeringsramme, fordi der er et enkelt dokument med kun resultater. Du kan stadig paginere på en almindelig forespørgsel ved at bruge spring og begræns, men en bedre praksis ville være at bruge en intervalforespørgsel på grund af dets effektivitet ved at bruge et indeks.
OPDATERING:
Siden v2.6 Mongo returnerer aggregeringsramme en markør i stedet for et enkelt dokument. Sammenlign:v2.4 og v2.6 .