Inte säker på prestandan i stora frågor, men det här är åtminstone ett alternativ.
Du kan lägga till dina resultat i en array genom att gruppera/skjuta och sedan varva ner med includeArrayIndex
så här:
[
{$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, om din databas innehåller en stor mängd poster, och du tänker paginera, kan du använda $hopp-steget och sedan $limit 10 eller 20 eller vad du vill visa per sida, och bara lägga till numret från $skip steg till ditt rownum och du kommer att få den verkliga positionen utan att behöva trycka på alla dina resultat för att räkna upp dem.