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

Impaginazione efficiente dell'aggregazione MongoDB?

Nei metodi del cursore MongoDB (cioè quando si usa find() ) come limit , sort , skip può essere applicato in qualsiasi ordine => l'ordine non ha importanza. Un find() restituisce un cursore su cui sono state applicate le modifiche. L'ordinamento viene sempre eseguito prima del limite, anche il salto viene eseguito prima del limite. Quindi in altre parole l'ordine è:ordina -> skip -> limit .

Il framework di aggregazione non restituisce un cursore DB. Invece restituisce un documento con risultati di aggregazione. Funziona producendo risultati intermedi in ogni fase della pipeline e quindi l'ordine delle operazioni è davvero importante.

Immagino che MongoDB non supporti l'ordine per i metodi di modifica del cursore a causa del modo in cui è implementato internamente.

Non puoi impaginare su un risultato del framework di aggregazione perché esiste un singolo documento con solo risultati. Puoi ancora impaginare una query normale utilizzando skip and limit, ma una pratica migliore sarebbe quella di utilizzare una query di intervallo a causa dell'efficienza dell'utilizzo di un indice.

AGGIORNAMENTO:

Dalla v2.6 il framework di aggregazione Mongo restituisce un cursore invece di un singolo documento. Confronta:v2.4 e v2.6 .