非常に大きなドキュメントのコレクションを改ページしています。私は_idを使ってこれがmongoDBのページ分割の効率的な手段であるかどうか疑問に思っていました。私の関心事は、クエリを作成するたびにIDのコレクション全体をソートしてから結果を返す必要があるということです。私はインデックスを使ってクエリを最適化するこのドキュメントを見ましたが、私が既にインデックスされていると思っていた_idをクエリしているので、これは私に当てはまりますか?このMongoDBクエリをNode.jsのページングに最適化する方法はありますか
ページネーション機能:
function paginateDocs(currId, docsPerPage) {
const query = currId ? { _id: { $gt: currId } } : {};
const queryOptions = { limit: usersPerPage, sort: '_id' };
return mongo.find(query, queryOptions).toArray();
}
デフォルトのインデックス '{_id:1}'を選んで、btreeの 'currId'の範囲でドキュメントを探してください。 'mongo.explain(1).find(query、options)'の出力を貼り付けることができます – hyades
これを実稼働環境で実行することができないので、これはもう役に立たないと思っていますか? –