Nejste si jisti výkonem ve velkých dotazech, ale toto je alespoň možnost.
Své výsledky můžete přidat do pole seskupením/posunutím a poté je uvolnit pomocí includeArrayIndex
takhle:
[
{$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
}}
]
Nyní, pokud vaše databáze obsahuje velké množství záznamů a máte v úmyslu stránkovat, můžete použít fázi $skip a poté $limit 10 nebo 20 nebo cokoliv, co chcete zobrazit na stránce, a jednoduše přidat číslo z $skip fázi do svého rownum a získáte skutečnou pozici, aniž byste museli tlačit všechny své výsledky, abyste je vyjmenovali.