MongoDB
 Computer >> コンピューター >  >> プログラミング >> MongoDB

MongoDBの集計パイプラインで$groupフェーズを効率化する方法

$groupフェーズの高速化の基本

MongoDBの集計パイプラインにおいて、$groupフェーズを高速化するには、$project$unwindなどのステージと組み合わせて、処理対象のデータ量を事前に絞り込むことが重要です。不要なフィールドを早い段階で除外することで、メモリ消費と処理時間を大幅に削減できます。

ここでは、配列内の値ごとの出現頻度をカウントする例を通して、その具体的な手順を見ていきましょう。

サンプルコレクションの作成

まず、ドキュメントを含むコレクションを作成します。

> db.demo423.insertOne({"Information":[101,110,87,110,98,115,101,115,89,115]});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5e73a60e9822da45b30346e6")
}

find()メソッドでドキュメントを確認

次に、find()メソッドを使ってコレクション内のすべてのドキュメントを表示します。

> db.demo423.find();

このクエリを実行すると、以下のような出力が得られます。

{ "_id" : ObjectId("5e73a60e9822da45b30346e6"), "Information" : [ 101, 110, 87, 110, 98, 115, 101, 115, 89, 115 ] }

$groupフェーズを高速化する集計クエリ

以下は、$groupフェーズを効率化するための集計クエリです。ポイントは、最初に$projectで必要なフィールドのみに絞り込み、$unwindで配列を展開してからグループ化を行う点です。

> db.demo423.aggregate([
...     {
...        $project: {_id: 0, 'Information': 1}
...     },
...     {
...        $unwind: '$Information'
...     },
...     {
...        $group:{_id: '$Information', frequency:{$sum: 1}}
...     },
...     {
...        $sort:{frequency:-1}
...     },
...     {
...        $limit:2
...     }
... ])

このパイプラインでは、以下の処理が順に行われます。

  • $project: _idを除外し、必要な「Information」フィールドだけを残すことで、後続ステージの負荷を軽減します。
  • $unwind: 配列「Information」を個々の要素に分解します。
  • $group: 各値の出現回数(frequency)を合計します。
  • $sort: 頻度の降順に並べ替えます。
  • $limit: 上位2件のみを取得し、無駄な出力を防ぎます。

実行結果は以下の通りです。

{ "_id" : 115, "frequency" : 3 }
{ "_id" : 110, "frequency" : 2 }

まとめ

このように、集計パイプラインの早い段階で$projectによるフィールドの絞り込みを行い、$unwind$group$sort$limitという順序で処理を組み立てることで、$groupフェーズのパフォーマンスを効果的に向上させることができます。

  1. ウイルス対策ソフトでPCを高速化する方法|セキュリティと快適さを両立させる5つのポイント

    「アンチウイルスソフトを入れるとPCが遅くなる」という誤解を持っている方は少なくありません。確かに、まれに一時的に動作が重く感じられることはありますが、それはPC全体を徹底的にスキャンし、脅威を早期に排除するために必要な処理です。むしろ総合的に見れば、アンチウイルスソフトはPCのパフォーマンス向上に大きく貢献してくれます。 現在、優れた有料・無料のアンチウイルスソフトが数多く登場しています。本記事では、その中でも特に評判の高い「Systweak Antivirus」を例に挙げて解説します。詳細なレビュー記事も公開しているので、実際の動作を確認したい方はぜひ参考にしてください。 アンチウイルスソ

  2. Chromebookの動作が遅いときの対処法!初心者でもできる高速化テクニック7選

    最近、Chromebookの動きが少し重くなっていませんか?ちょっとしたチューニングだけで、快適な速度を取り戻せるかもしれません。 Chromebookは手頃な価格で信頼性が高く、ウェブ閲覧に最適なノートパソコンです。しかし、決して完璧というわけではありません。使い続けるうちに動作が徐々に遅くなり、ストレスを感じることもあるでしょう。拡張機能、プラグイン、ネットワーク接続、マルウェアなど、Chromebookの速度に影響を与える要因は数多く存在します。幸い、こうした問題の多くは自分で解決できます。ここでは、Chromebookのパフォーマンスを向上させるための簡単な方法をご紹介します。 1.