¿Paginación eficiente de la agregación de MongoDB?

Para mayor eficiencia, la documentación de Mongo recomienda que las declaraciones de límite sigan inmediatamente a las declaraciones de ordenación, por lo que terminan con algo sin sentido:

 collection.find(f).sort(s).limit(l).skip(p)

Digo que esto es un poco absurdo porque parece decir, toma los primeros elementos y luego tira los primeros p de esos valores. Como p es generalmente más grande que l, pensarías que terminarías sin resultados, pero en la práctica terminas con l resultados.

La agregación funciona más como usted esperaría:

collection.aggregate({$unwind: u}, {$group: g},{$match: f}, {$sort: s}, {$limit: l}, {$skip: p})

devuelve 0 resultados si p> = l.

collection.aggregate({$unwind: u}, {$group: g}, {$match: f}, {$sort: s}, {$skip: p}, {$limit: l})

funciona, pero la documentación parece implicar que esto fallará si la coincidencia devuelve un conjunto de resultados que es más grande que la memoria de trabajo. ¿Es esto cierto? Si es así, ¿hay una mejor manera de realizar la paginación en un conjunto de resultados devuelto a través de la agregación?

Fuente: el comentario "Cambiado en la versión 2.4" al final de esta página:http://docs.mongodb.org/manual/reference/operator/aggregation/sort/

Respuestas a la pregunta(2)

Su respuesta a la pregunta