MongoDBで重複しない個別の値のみを取得する方法|distinct()の使い方
MongoDBで重複のない値(distinct values)を取得したい場合は、distinct()メソッドを使用します。このメソッドは、単一のコレクションまたはビューに対して、指定したフィールドの一意な値を検索し、その結果を配列として返してくれます。
サンプルコレクションの作成
まず、ドキュメントを含むコレクションを作成してみましょう。
> db.demo287.insertOne({"details":{"AllVowels":["a","u","u","o","e","a","o","i"]}});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e4c014cf49383b52759cbbd")
}find()メソッドでドキュメントを確認
次に、find()メソッドを使って、作成したコレクション内のすべてのドキュメントを表示します。
> db.demo287.find().pretty();
実行すると、以下のような出力が得られます。
{
"_id" : ObjectId("5e4c014cf49383b52759cbbd"),
"details" : {
"AllVowels" : [ "a", "u", "u", "o", "e", "a", "o", "i" ]
}
}distinct()で一意な値を取得する
それでは、重複を除いた個別の値を取得するクエリを見てみましょう。フィールド名をパスとして指定するだけで、ネストされた配列内の値にも対応できます。
> db.demo287.distinct("details.AllVowels");実行すると、次の出力が得られます。
[ "a", "e", "i", "o", "u" ]
元の配列には「u」や「a」、「o」などが複数回含まれていましたが、distinct()を使うことで、重複が自動的に取り除かれた一意な値だけが配列形式で返されていることがわかります。
まとめ
- distinct()は、指定したフィールドの重複しない値を配列で返すメソッドです。
- 「details.AllVowels」のようにパスを指定することで、ネストされたドキュメントや配列内の値も対象にできます。
- 大量のデータからカテゴリやタグなどのユニークな値を抽出したい場合に便利です。
-
MongoDBでグループごとの最大値を取得する方法($sortと$groupの活用)
MongoDBで、重複している個別の要素(グループ)ごとに最大値を取得したい場合、aggregate()メソッドと$sort・$groupステージを組み合わせることで実現できます。この記事では、実際のコード例を通じて、その手順をわかりやすく解説します。サンプルコレクションの作成まず、ドキュメントを含むコレクションを作成します。ここではdemo750というコレクションに、idとvalueフィールドを持つドキュメントを挿入します。> db.demo750.insertOne({id:101,value:50}); { acknowledged : true, inserted
-
MySQLで一意な値を取得してカウントする方法|GROUP BY句の使い方を解説
MySQLで一意な値を取得してカウントする方法MySQLでテーブル内の一意な(重複を除いた)値を取得し、それぞれの出現回数をカウントしたい場合は、GROUP BY句を使用します。GROUP BY句は、指定したカラムの値が同じ行を1つのグループにまとめるため、COUNT(*)関数と組み合わせることで、値ごとの件数を簡単に集計できます。基本構文構文は以下のとおりです。select yourColumnName, count(*) as anyAliasName from yourTableName group by yourColumnName;サンプルテーブルの作成実際に動作を確認するため、まず