フィールドの個別の値を取得
collection.distinguished() メソッド を使用すると、コレクション全体のフィールドの個別の値のリストを検索できます使用して複数のドキュメントを挿入できます。 ドキュメント フィールド名パラメータを持つCollection
オブジェクトでString
として distinct()
メソッドを呼び出し、指定されたドキュメント フィールドに含まれる異なる値をそれぞれ 1 つ含むリストを生成します。
const distinctValues = myColl.distinct("countries", query);
ドット表記 を使用して 埋め込みドキュメント 内のドキュメント フィールドを指定できます。配列を含むドキュメント フィールドでdistinct()
を呼び出すと、メソッドは各要素を個別の値として扱います。 awards
サブドキュメントのwins
フィールドに対するメソッド呼び出しの次の例を参照してください。
const distinctValues = myColl.distinct("awards.wins", query);
distinct()
メソッドの 3 つ目のパラメータとして渡されるoptions
オブジェクトを使用して、追加のクエリ オプションを指定できます。 クエリ パラメーターの詳細については 、API ドキュメントの distinct() メソッド を参照してください。
ドキュメント フィールド名に 型String
Document
、Array
、Number
、 など、 型ではない値を指定すると、メソッドは実行されず、null
TypeMismatch
エラーが返されます次のようなメッセージが表示されます。
"key" のタイプが間違っていました。 期待されるstring 、見つかりました <非stringタイプ>
distinct()
メソッドの詳細については、 個別の値の取得をご覧ください。
例
次のスニペットは、 movies
コレクションからyear
ドキュメント フィールドの個別の値のリストを取得します。 クエリ ドキュメントを使用して、「バーバー スレイサンド」をdirector
として含む映画を照合します。
注意
この例を使って MongoDB のインスタンスに接続し、サンプルデータを含むデータベースとやり取りできます。MongoDB インスタンスへの接続とサンプル データセットの読み込みの詳細については、使用例ガイドを参照してください。
1 import { MongoClient } from "mongodb"; 2 3 // Replace the uri string with your MongoDB deployment's connection string. 4 const uri = "<connection string uri>"; 5 6 const client = new MongoClient(uri); 7 8 async function run() { 9 try { 10 11 // Get the database and collection on which to run the operation 12 const database = client.db("sample_mflix"); 13 const movies = database.collection("movies"); 14 15 // Specify the document field to find distinct values for 16 const fieldName = "year"; 17 18 // Specify an optional query document to narrow results 19 const query = { directors: "Barbra Streisand" }; 20 21 // Execute the distinct operation 22 const distinctValues = await movies.distinct(fieldName, query); 23 24 // Print the result 25 console.log(distinctValues); 26 } finally { 27 await client.close(); 28 } 29 } 30 run().catch(console.dir);
1 import { MongoClient } from "mongodb"; 2 3 // Replace the uri string with your MongoDB deployment's connection string. 4 const uri = "<connection string uri>"; 5 6 const client = new MongoClient(uri); 7 8 interface Movie { 9 directors: string; 10 year: number; 11 } 12 13 async function run() { 14 try { 15 // define a database and collection on which to run the method 16 const database = client.db("sample_mflix"); 17 const movies = database.collection<Movie>("movies"); 18 19 const distinctValues = await movies.distinct("year", { 20 directors: "Barbra Streisand", 21 }); 22 23 console.log(distinctValues); 24 } finally { 25 await client.close(); 26 } 27 } 28 run().catch(console.dir);
上記の例を実行すると、次の出力が表示されます。
[ 1983, 1991, 1996 ]