MongoDB {集計 $match} と {find} の速度比較
質問
数百万行のmongoDBコレクションを持っていて、クエリを最適化しようとしています。私は現在、データを取得し、私が望むようにそれらをグループ化するために集約フレームワークを使用しています。私の典型的な集約クエリは次のようなものです。
$match > $group > $ group > $project
しかし、私は最後の部分が数ミリ秒しかかからず、最初が最も遅いことに気づきました。
私は $match フィルタのみを使用してクエリを実行し、次に collection.find で同じクエリを実行しようとしました。集計クエリは ~80ms かかるのに対し、検索クエリは 0 か 1ms しかかかりません。
私はかなり多くのフィールドにインデックスを持っているので、これは問題ではないでしょう。何が問題なのか、何か考えがありますか? それとも、集約フレームワークの通常の欠点なのでしょうか?
集約クエリの代わりに検索クエリを使用することができますが、リクエストの後に多くの処理を実行する必要があり、この処理を素早く行うには
$group
などで素早く処理できるので、アグリゲーションフレームワークを維持したいです。
ありがとうございます。
EDIT :
以下は私の基準です。
{
"action" : "click",
"timestamp" : {
"$gt" : ISODate("2015-01-01T00:00:00Z"),
"$lt" : ISODate("2015-02-011T00:00:00Z")
},
"itemId" : "5"
}
どのように解決するのですか?
の主な目的は
aggregation framework
は、大量のエントリのクエリを容易にし、あなたにとって価値のある少数の結果を生成することです。
おっしゃるとおり、複数の
find
クエリを使用することもできますが、その場合は
find
クエリで新しいフィールドを作成することはできないことを覚えておいてください。一方
$group
ステージでは、新しいフィールドを定義することができます。
の機能を実現したいのであれば
aggregation framework
の機能を実現したい場合、ほとんどの場合、最初に
find
(を実行し、その情報を引き出して、さらにプログラミング言語で操作する必要があります。
は
aggregation pipeline
は時間がかかるように見えるかもしれませんが、少なくとも、1 つのシステム (MongoDB エンジン) のパフォーマンスだけを考慮すればよいことは分かっています。
から返されたデータを操作することになると、その分時間がかかります。
find
クエリから返されたデータを操作するとなると、ほとんどの場合、さらにプログラミング言語でデータを操作する必要があり、選択したプログラミング言語の複雑さに応じて、複雑さが増していきます。
関連
-
[解決済み】MongoDBシェルですべてのコレクションを一覧表示するには?
-
[解決済み] 配列フィールドが空でない MongoDB レコードを検索する
-
[解決済み] MongoDBに "like "を使ってクエリを実行する方法
-
[解決済み] pandasを使った "大量データ "ワークフロー【終了しました
-
[解決済み] コマンドラインからMongoDBデータベースを削除する方法を教えてください。
-
[解決済み] 別のフィールドの値を使って MongoDB のフィールドを更新する
-
[解決済み】ネストされたオブジェクトをクエリする方法は?
-
[解決済み】MongoDB コレクションの変更をリッスンする方法は?
-
[解決済み] MongoDB集計フレームワーク match OR
-
[解決済み] MongoDB: 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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】MongoError: 最初の接続でサーバー [localhost:27017] への接続に失敗しました。
-
[解決済み] HomebrewでMongoDBをインストールする
-
[解決済み] MongoDBのデフォルトのユーザーとパスワードは何ですか?
-
[解決済み] mongodb Failed: error connecting to db server: no reachable servers
-
[解決済み] MongoDBと同等ではない
-
問題 - mongodb - ストリームの終了に早く到達する
-
[解決済み】ネストされたオブジェクトをクエリする方法は?
-
[解決済み】MongoDB コレクションの変更をリッスンする方法は?
-
[解決済み] Mongoose Unique インデックスが機能しない!
-
[解決済み] MongoDB: フィールドがNULLまたは未設定のレコードを検索するには?