[解決済み] Mongoose のリミット/オフセットとカウントクエリ
2023-01-06 12:16:53
質問
クエリのパフォーマンスに関する少し変わったもの... 私はドキュメントの総カウントを行うクエリを実行する必要があり、また、制限およびオフセットすることができる結果セットを返すことができます。
私は合計で57のドキュメントを持っており、ユーザーは10のドキュメントを20でオフセットすることを望んでいます。
1つ目は57のドキュメントをすべて問い合わせ(配列として返されます)、それからarray.sliceを使ってユーザーが望むドキュメントを返します。2つ目の方法は、2つのクエリを実行することです。1つ目はmongoのネイティブな「count」メソッドを使用し、次にmongoのネイティブな$limitと$skipアグリゲーターを使用して2つ目のクエリを実行することです。
どちらがよりよくスケールすると思いますか?1つのクエリですべてを行うか、2つの別々のクエリを実行するか?
編集します。
// 1 query
var limit = 10;
var offset = 20;
Animals.find({}, function (err, animals) {
if (err) {
return next(err);
}
res.send({count: animals.length, animals: animals.slice(offset, limit + offset)});
});
// 2 queries
Animals.find({}, {limit:10, skip:20} function (err, animals) {
if (err) {
return next(err);
}
Animals.count({}, function (err, count) {
if (err) {
return next(err);
}
res.send({count: count, animals: animals});
});
});
どのように解決するのですか?
2つのクエリを使用することをお勧めします。
-
db.collection.count()
はアイテムの総数を返します。この値は Mongo のどこかに保存されており、計算されることはありません。 -
db.collection.find().skip(20).limit(10)
ここでは、あるフィールドでソートすることを想定しているので、このフィールドにインデックスを追加することを忘れないでください。このクエリも高速になります。
ビッグデータになってくると、データの転送や処理の問題が出てくるので、全項目をクエリして、skip and takeはしない方がいいと思います。
関連
-
[解決済み】MongoDBシェルですべてのコレクションを一覧表示するには?
-
[解決済み] Mongodb: ensureIndex をいつ呼び出すか?
-
[解決済み] 同じデータベース内でコレクションをコピーする最も速い方法は何ですか?
-
[解決済み] mongodb サービスが開始されない
-
undefinedエラー: getaddrinfo ENOTFOUND localhost または MongoDB connected disconnected
-
[解決済み] MongoDBに "like "を使ってクエリを実行する方法
-
[解決済み] Mongooseで文書を更新/アップサートするにはどうしたらいいですか?
-
[解決済み] Mongooseの"__v "フィールドとは?
-
[解決済み] MongoDB SELECT COUNT GROUP BY
-
[解決済み】RedisはmongoDBよりどれくらい速いのか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] MongoDB - 管理者ユーザが認証されていない
-
[解決済み] Mongorestore はファイル "db/collection.bson" をどうしたらいいかわからないため、スキップします。
-
[解決済み] Mongodbでキーに基づいた重複を削除する方法は?
-
[解決済み] mongodb サービスが開始されない
-
[解決済み] 複数のキーで "distinct "を効率的に実行するには?
-
[解決済み】シェルスクリプトでmongoのコマンドを実行するには?
-
[解決済み】Dockerコンテナのディスク使用量を分析する方法
-
[解決済み】RedisはmongoDBよりどれくらい速いのか?
-
[解決済み] MongoDB: フィールドがNULLまたは未設定のレコードを検索するには?
-
[解決済み] Mac OS のターミナルからリモートの Mongo サーバーに接続するにはどうしたらいいですか?