Big Queryのパフォーマンスについてはわかりませんが、これは少なくともオプションです。
グループ化/プッシュして結果を配列に追加してから、includeArrayIndex
で巻き戻すことができます。 このように:
[
{$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
}}
]
これで、データベースに大量のレコードが含まれていて、ページ分割する場合は、$ skipステージを使用してから、$ limit 10または20、またはページごとに表示したいものを使用して、$skipから数値を追加することができます。行番号にステージングすると、すべての結果をプッシュして列挙しなくても、実際の位置を取得できます。