MongoDBコレクションから一意の値(重複なし)を取得する方法【distinct()の使い方】
MongoDBでコレクション内の重複データを除外し、一意の値だけを取得したい場合は、distinct()メソッドを使用します。distinct()は、指定したフィールドに含まれる重複しない値を1つのコレクション全体から検索し、その結果を配列として返します。
サンプルコレクションの作成
まず、insertOne()を使ってドキュメントを挿入し、コレクションを作成します。
> db.demo704.insertOne({"LanguageCode":"hi"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5ea6ee18551299a9f98c93bd")
}
> db.demo704.insertOne({"LanguageCode":"en"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5ea6ee1e551299a9f98c93be")
}
> db.demo704.insertOne({"LanguageCode":"hi"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5ea6ee20551299a9f98c93bf")
}
> db.demo704.insertOne({"LanguageCode":"eo"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5ea6ee2c551299a9f98c93c0")
}
> db.demo704.insertOne({"LanguageCode":"eu"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5ea6ee2f551299a9f98c93c1")
}
> db.demo704.insertOne({"LanguageCode":"fo"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5ea6ee35551299a9f98c93c2")
}
> db.demo704.insertOne({"LanguageCode":"fo"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5ea6ee37551299a9f98c93c3")
}この例では、「hi」と「fo」がそれぞれ2件ずつ登録されており、重複データが存在する状態になっています。
登録済みドキュメントの確認
find()メソッドを使って、コレクション内のすべてのドキュメントを表示してみましょう。
> db.demo704.find();
これにより、次のような出力が得られます。
{ "_id" : ObjectId("5ea6ee18551299a9f98c93bd"), "LanguageCode" : "hi" }
{ "_id" : ObjectId("5ea6ee1e551299a9f98c93be"), "LanguageCode" : "en" }
{ "_id" : ObjectId("5ea6ee20551299a9f98c93bf"), "LanguageCode" : "hi" }
{ "_id" : ObjectId("5ea6ee2c551299a9f98c93c0"), "LanguageCode" : "eo" }
{ "_id" : ObjectId("5ea6ee2f551299a9f98c93c1"), "LanguageCode" : "eu" }
{ "_id" : ObjectId("5ea6ee35551299a9f98c93c2"), "LanguageCode" : "fo" }
{ "_id" : ObjectId("5ea6ee37551299a9f98c93c3"), "LanguageCode" : "fo" }distinct()で一意の値を取得する
重複を除外して一意の値を配列として表示するには、以下のクエリを実行します。
> db.demo704.distinct("LanguageCode");実行結果は次のとおりです。
[ "hi", "en", "eo", "eu", "fo" ]
このように、複数回出現していた「hi」や「fo」も1つにまとめられ、重複のない言語コードの一覧が配列形式で取得できます。条件を絞り込みたい場合は、distinct()の第2引数にクエリ条件を渡すことも可能なので、用途に応じて柔軟に活用するとよいでしょう。
-
MongoDBコレクションから重複を削除する方法|unique制約の使い方を解説
MongoDBコレクションから重複を削除する方法MongoDBのコレクションに重複データが登録されるのを防ぎたい場合は、ユニーク制約(unique: true)を設定するのが最も基本的かつ確実な方法です。対象フィールドにユニークインデックスを作成しておくことで、同じ値を持つドキュメントの挿入が自動的に拒否され、コレクション内に重複が存在しない状態を維持できます。基本構文以下のように、コレクション名とフィールド名を指定してユニークインデックスを作成します。「dropDups: true」を付けることで、インデックス作成時点で既に存在していた重複ドキュメントも削除され、各グループの最初の1件のみが
-
Pythonでリストから一意の値(重複しない要素)を抽出する3つの方法
Pythonのリストは、[](角括弧)の中に複数の要素を格納できるデータ構造です。異なるデータ型を混在させることもでき、重複した値を含むこともあります。本記事では、リストから重複を除いた一意の値だけを取り出す方法を、代表的な3つのアプローチに分けて解説します。方法1:append() と not in を使う方法まず空の新しいリストを作成し、元のリストの要素を1つずつ確認しながら、まだ新しいリストに存在しない場合のみ追加していく方法です。forループと not in 条件を組み合わせることで、要素の存在チェックを行い、未登録の要素だけを追加できます。コード例def catch_unique(l