Ikke sikker på ydeevnen i store forespørgsler, men dette er i det mindste en mulighed.
Du kan tilføje dine resultater til et array ved at gruppere/skubbe og derefter slappe af med includeArrayIndex
sådan her:
[
{$match: {author: {$ne: 1}}},
{$limit: 10000},
{$group: {
_id: 1,
book: {$push: {title: '$title', author: '$author', copies: '$copies'}}
}},
{$unwind: {path: '$book', includeArrayIndex: 'rownum'}},
{$project: {
author: '$book.author',
title: '$book.title',
copies: '$book.copies',
rownum: 1
}}
]
Nu, hvis din database indeholder en stor mængde poster, og du har til hensigt at paginere, kan du bruge $spring-stadiet og derefter $limit 10 eller 20 eller hvad du nu vil have vist pr. side, og bare tilføje nummeret fra $spring etape til dit række, og du får den rigtige position uden at skulle skubbe alle dine resultater for at opregne dem.