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

MongoDBでフィールド(キー)ごとの個別値の数を数える方法

MongoDBでフィールド(キー)ごとの個別値の数を数える方法

MongoDBで特定のフィールドに含まれる重複のない値の種類を確認したい場合は、distinctコマンドを使うのが最もシンプルな方法です。ここでは、実際にサンプルコレクションを作成しながら、個別値の取得方法とその件数のカウント方法を順を追って解説します。

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

まず、概念を理解するために、ドキュメントを含むコレクションを作成しましょう。コレクションを作成するためのクエリは以下のとおりです。

> db.distinctCountValuesDemo.insertOne({"StudentFirstName":"John","StudentFavouriteSubject":["C","C++","Java","MySQL","C","C++"]});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5c8a39f193b406bd3df60e07")
}
> db.distinctCountValuesDemo.insertOne({"StudentFirstName":"Larry","StudentFavouriteSubject":["MongoDB","SQL Server"]});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5c8a3a1193b406bd3df60e08")
}

この例では、学生の名前(StudentFirstName)と好きな科目(StudentFavouriteSubject)を格納した2件のドキュメントを挿入しています。Johnのドキュメントでは「C」と「C++」が重複して登録されている点に注目してください。

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

find()メソッドを使うと、コレクション内のすべてのドキュメントを表示できます。クエリは以下のとおりです。

> db.distinctCountValuesDemo.find().pretty();

出力は次のようになります。

{
    "_id" : ObjectId("5c8a39f193b406bd3df60e07"),
    "StudentFirstName" : "John",
    "StudentFavouriteSubject" : [
        "C",
        "C++",
        "Java",
        "MySQL",
        "C",
        "C++"
    ]
}
{
    "_id" : ObjectId("5c8a3a1193b406bd3df60e08"),
    "StudentFirstName" : "Larry",
    "StudentFavouriteSubject" : [
        "MongoDB",
        "SQL Server"
    ]
}

distinct()で個別の値を取得する

フィールド(キー)ごとに個別の値を取得するには、以下のクエリを実行します。

> db.distinctCountValuesDemo.distinct('StudentFavouriteSubject');

出力は次のとおりです。

[ "C", "C++", "Java", "MySQL", "MongoDB", "SQL Server" ]

ご覧のとおり、重複していた「C」と「C++」は1つにまとめられ、コレクション全体から6種類のユニークな値が抽出されました。

個別値の件数をカウントする

配列内の個別値の件数(長さ)を取得するには、lengthプロパティを組み合わせます。クエリは以下のとおりです。

> db.distinctCountValuesDemo.distinct('StudentFavouriteSubject').length;

出力は次のようになります。

6

まとめ

このように、distinct()メソッドでフィールド内のユニークな値を取得し、.lengthを付けるだけで、個別値の総数を簡単にカウントできます。なお、distinct()の第2引数にクエリ条件を渡せば、特定のドキュメントに絞り込んで個別値を取得することも可能です(例:distinct('フィールド名', {条件}))。さらに複雑な集計を行いたい場合は、$unwind$groupを活用したアグリゲーションフレームワークの利用も検討するとよいでしょう。

  1. MySQLで重複を除いた個別の値の件数をカウントする方法

    MySQLで個別の値の件数をカウントする方法MySQLでは、COUNT(DISTINCT カラム名) を使うことで、重複を除外した上で値の種類数を数えることができます。ここでは、サンプルテーブルを作成し、実際に個別の値の件数を取得するまでの手順を具体的に解説します。1. テーブルの作成まず、以下のコマンドでテーブルを作成しましょう。mysql> create table DemoTable    -> (    -> Name varchar(100),   &nbs

  2. Excelで列の一意の値・重複のない値の数をカウントする方法

    Excelのシートで、列内のリストから「一意の値」や「重複のない値」の数を抽出することは、さまざまな場面で役立ちます。例えば、ある大会で優勝した選手の人数を集計したい場合や、顧客ごとに販売された商品の種類数を把握したい場合などです。このような集計作業において、一意の値・重複のない値のカウントは非常に便利なテクニックとなります。 まず用語を整理しておきましょう。「一意の値(ユニークな値)」とは、リスト内に1回だけ出現する値のことです。一方、「重複のない値(ディスティンクトな値)」とは、重複を除いた値の種類数のことです。同じ値が何回出現しても1つとして数える点がポイントです。 Excelで列内の一