MongoDB で一意の値を返す
-
MongoDB の
distinct()
関数 -
distinct()
関数を使用して一意の値を返す - MongoDB のフィールドに対して一意の値または個別の値を返す
- MongoDB の埋め込みフィールドに一意の値を返す
- 埋め込み配列フィールドの一意の値を返す
この記事では、MongoDB distinct()
メソッドを使用して一意の値を返す方法に取り組みます。 さらに、配列とフィールドで一意の値を返すことについても説明します。
MongoDB では、一意の値をレンダリングしたり返したりしたい場合があり、distinct()
メソッドを利用することでこれを実現できます。
distinct()
メソッドは、単一のコレクションまたはビュー内のすべてのコレクションまたはビューにわたって特定のフィールドの個別の値の配列を生成し、mongo シェルで指定されたフィールドの一意の値を返すのに役立ちます。
MongoDB の distinct()
関数
構文:
db.collection.distinct(field, query, options)
MongoDB では、関数には、フィールドとクエリ演算子と呼ばれる 2つの必須パラメーターが必要です。 field パラメータは、distinct()
メソッドで一意の値を取得するフィールドです。
クエリ パラメータは、個別の値を取得するドキュメントを指定します。 関数に担保オプション パラメータを送信できます。
指定されたフィールドの値が配列の場合、distinct()
は各配列要素を個別の値として扱うことに注意してください。 たとえば、フィールドの値が [10, [10], 10]
の場合、distinct()
は 10
、[10]
、および 10
を個別の値として扱います。
distinct()
関数を使用して一意の値を返す
distinct()
関数を使用して、MongoDB で一意の値を返しましょう。 以下のコレクションは、最初の例で使用されます。
db.movies.find().pretty()
{
"_id" : ObjectId("60322d3501cd70079c48cb65"),
"title" : "Enchanted",
"year" : 2006,
"score" : 10,
"rating" : "PG",
"__v" : 0
}
{
"_id" : ObjectId("60322d3501cd70079c48cb67"),
"title" : "Final Destination II",
"year" : 2015,
"score" : 10,
"rating" : "PG-13",
"__v" : 0
}
{
"_id" : ObjectId("6190189ef5c8903629012fe1"),
"title" : "Fifty Shades of Grey",
"year" : 2015,
"score" : 10,
"rating" : "NC-17",
"__v" : 0
}
MongoDB のフィールドに対して一意の値または個別の値を返す
上記のムービー コレクションは、この例で指定されたフィールドに対して一意の値を返します。 評価フィールドから一意の値が必要だとしましょう。
クエリ:
db.movies.distinct( "rating" )
[ null, "", "NC-17", "PG", "PG-13"]
上記のクエリを使用した後、distinct()
関数は、コレクションに対して MongoDB で一意の値を返すのに役立ちました。
MongoDB の埋め込みフィールドに一意の値を返す
この例では、埋め込みフィールドの一意の値を返すことが示されています。 ただし、前の例で使用されたコレクションには埋め込みフィールドが含まれていませんでした。
したがって、以下に示すように、新しいコレクションが使用されます。
db.drones.find().pretty()
{
"_id" : ObjectId("61673f46b34f185eb7b2bf0c"),
"utility" : [
"Natural Resource Exploration",
"Remote sensing",
"Real estate and construction",
"Recreation",
"Delivery"
],
"onSale" : false,
"name" : "Nimbari Gryphon Medeta 65",
"price" : 77500,
"weight" : "77 kilograms",
"additionalDetails" : {
"material" : "carbon fiber",
"moreUses" : [
"Precision Agriculture",
"Land Inspection",
"Water Inspection",
"Cinematography"
]
}
}
{
"_id" : ObjectId("61673f46b34f185eb7b2bf0d"),
"utility" : [
"Natural Resource Exploration",
"Remote sensing",
"Real estate and construction",
"Recreation",
"Delivery"
],
"onSale" : false,
"name" : "X-Strimmer Eye",
"price" : 23500,
"weight" : "24 kilograms",
"additionalDetails" : {
"material" : "glass fiber",
"moreUses" : [
"Precision Agriculture",
"Cinematography"
]
}
}
{
"_id" : ObjectId("61673f46b34f185eb7b2bf0e"),
"utility" : [
"Natural Resource Exploration",
"Remote sensing",
"Real estate and construction",
"Recreation",
"Delivery"
],
"onSale" : false,
"name" : "Khai Balemosh Shefqa TRX",
"price" : 120500,
"weight" : "80 kilograms",
"additionalDetails" : {
"material" : "aluminum",
"moreUses" : [
"Precision Agriculture",
"Land Inspection"
]
}
}
次のクエリは、上記のデータベース コレクションのすべての埋め込みフィールドから一意の値を返すことができます。
クエリ:
db.drones.distinct( "additionalDetails.material" )
[ "aluminum", "carbon fiber", "glass fiber"]
埋め込み配列フィールドの一意の値を返す
distinct()
関数を使用すると、上記と同じコレクションを使用して、distinct()
関数を使用して埋め込み配列フィールドから一意の値を返すことができます。
クエリ:
db.drones.distinct( "additionalDetails.moreUses" )
["Cinematography","Land Inspection"]
この MongoDB チュートリアルの記事では、コレクションを使用した個別の関数の詳細を示します。 配列とフィールドまたは埋め込みフィールドで一意の値を返すことも、コード セグメントで説明されています。