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

MongoDBのaggregateと$groupを使って名前レコードの出現頻度を取得する方法

MongoDBでは、aggregate()メソッドと$groupステージを組み合わせることで、特定のフィールド(ここでは「Name」)に同じ値が何回出現するかを簡単に集計できます。SQLでいうGROUP BY + COUNTに相当する処理です。

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

まず、ドキュメントを含むコレクションを作成しましょう。以下ではinsertOne()メソッドを使って5件のドキュメントを挿入しています。

> db.demo232.insertOne({_id:101,Name:"Chris"});
{ "acknowledged" : true, "insertedId" : 101 }
> db.demo232.insertOne({_id:102,Name:"Bob"});
{ "acknowledged" : true, "insertedId" : 102 }
> db.demo232.insertOne({_id:103,Name:"Bob"});
{ "acknowledged" : true, "insertedId" : 103 }
> db.demo232.insertOne({_id:104,Name:"David"});
{ "acknowledged" : true, "insertedId" : 104 }
> db.demo232.insertOne({_id:105,Name:"Chris"});
{ "acknowledged" : true, "insertedId" : 105 }

2. 登録済みドキュメントの確認

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

> db.demo232.find();

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

{ "_id" : 101, "Name" : "Chris" }
{ "_id" : 102, "Name" : "Bob" }
{ "_id" : 103, "Name" : "Bob" }
{ "_id" : 104, "Name" : "David" }
{ "_id" : 105, "Name" : "Chris" }

3. aggregate()と$groupで出現頻度を集計する

名前レコードの頻度を取得するためのクエリがこちらです。

> db.demo232.aggregate(
   { $group : {_id : "$Name", Frequency : { $sum : 1 }} }
);

クエリのポイント解説

  • $group:指定したフィールド("$Name")の値ごとにドキュメントをグループ化します。
  • _id : "$Name":グループ化のキーとしてNameフィールドを指定しています。
  • $sum : 1:各グループに属するドキュメントの件数をカウントします。ドキュメントが1つ見つかるたびに1が加算されます。

4. 実行結果

上記の集計クエリを実行すると、次のような出力が得られます。

{ "_id" : "David", "Frequency" : 1 }
{ "_id" : "Bob", "Frequency" : 2 }
{ "_id" : "Chris", "Frequency" : 2 }

この結果から、Davidは1回、BobとChrisはそれぞれ2回出現していることがわかります。このようにaggregate()と$groupを活用すれば、コレクション内のデータ分布や出現頻度を効率的に分析できます。

  1. MongoDBでIDを並べ替えてアイテムを逆順に取得する方法

    MongoDBでは、$naturalを使用するとドキュメントが自然順(natural order)で返されます。この順序を逆にしたい場合は、$natural:-1を指定します。サンプルコレクションの作成まず、ドキュメントを含むコレクションを作成しましょう。> db.demo710.insertOne({id:101,Name:"Robert"}); { "acknowledged" : true, "insertedId" : ObjectId("5ea83a855d33e20ed1097b7a&quo

  2. MongoDBのAggregateでドキュメントと配列要素の平均値を取得する方法

    MongoDBでドキュメントのフィールドおよび配列内の各要素の平均値を求めるには、aggregate()メソッドと$groupステージを組み合わせ、平均を計算する$avg演算子を使用します。ここでは、実際にサンプルコレクションを作成しながら、具体的な手順を解説します。 サンプルコレクションの作成 まず、insertOne()メソッドを使ってドキュメントを挿入し、コレクションを作成します。 > db.demo598.insertOne( ...    { ...       Information:Student, ...   &