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

MongoDBで特定のフィールド(列)から重複しない値を取得する方法

MongoDBでは、コレクション内の特定のフィールドから重複を除いた一意の値(個別の値)を取得したい場合があります。そんなときに便利なのが distinct() メソッドです。この記事では、実際のコード例を使いながら distinct() の基本的な使い方を解説します。

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

まずは動作確認用に、ドキュメントを含むコレクションを作成しましょう。insertOne() を使って複数のドキュメントを挿入します。あえて同じ名前を重複して登録している点に注目してください。

> db.demo128.insertOne({"Name":"Chris"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e30583d68e7f832db1a7f5d")
}
> db.demo128.insertOne({"Name":"David"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e30584068e7f832db1a7f5e")
}
> db.demo128.insertOne({"Name":"David"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e30584368e7f832db1a7f5f")
}
> db.demo128.insertOne({"Name":"Bob"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e30584668e7f832db1a7f60")
}
> db.demo128.insertOne({"Name":"Chris"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e30584c68e7f832db1a7f61")
}

登録したドキュメントの確認

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

> db.demo128.find();

実行すると、次のような出力が得られます。「David」と「Chris」がそれぞれ2件ずつ登録されていることがわかります。

{ "_id" : ObjectId("5e30583d68e7f832db1a7f5d"), "Name" : "Chris" }
{ "_id" : ObjectId("5e30584068e7f832db1a7f5e"), "Name" : "David" }
{ "_id" : ObjectId("5e30584368e7f832db1a7f5f"), "Name" : "David" }
{ "_id" : ObjectId("5e30584668e7f832db1a7f60"), "Name" : "Bob" }
{ "_id" : ObjectId("5e30584c68e7f832db1a7f61"), "Name" : "Chris" }

distinct() で一意の値を取得する

それでは本題です。MongoDBで特定のフィールドから重複しない値を取得するには、distinct() メソッドを使用します。引数には対象となるフィールド名を指定します。

> db.demo128.distinct("Name");

このクエリを実行すると、「Name」フィールドの一意な値だけが配列として返されます。

[ "Chris", "David", "Bob" ]

distinct() のポイント

  • 戻り値は配列: 重複が排除された値が配列形式で返されます。
  • 条件指定も可能: 第2引数にクエリ条件を渡すことで、特定の条件に一致するドキュメントのみを対象に一意の値を取得できます。例:db.demo128.distinct("Name", {"Name": {$ne: "Bob"}})
  • インデックスの活用: 対象フィールドにインデックスが作成されている場合、パフォーマンスが向上します。

このように、distinct() を使えばシンプルな記述だけでフィールド内のユニークな値を簡単に抽出できます。データ分析や重複チェックなど、さまざまな場面で活用できるので、ぜひ覚えておきましょう。

  1. MySQLで1つの列から重複する値の出現回数を取得する方法

    MySQLでは、GROUP BY句とCOUNT(*)関数を組み合わせることで、単一の列に含まれる重複した値がそれぞれ何回出現しているかを簡単に集計できます。ここでは、実際の手順をサンプルコード付きで解説します。 1. サンプルテーブルを作成する まず、数値を格納するシンプルなテーブルを作成しましょう。 mysql> create table DemoTable -> ( -> Number int -> ); Query OK, 0 rows affected (0.83 sec) 2. テストデータを挿入する INSERTコマンドを使って、意図的

  2. Python Pandas入門:DataFrameの列から一意の値を取得・カウントする方法

    PandasのDataFrameから特定の列の一意(ユニーク)な値を取得したい場合はunique()メソッドを使用します。また、一意な値の個数を数えたい場合はnunique()メソッドを使用します。この記事では、サンプルデータを使いながら、両メソッドの基本的な使い方を解説します。1. ライブラリのインポートまず、必要なライブラリをインポートします。import pandas as pd2. サンプルDataFrameの作成次に、「Car」「Place」「Units」の3つの列を持つDataFrameを作成します。このデータには重複した値が含まれている点に注目してください。dataFrame =