MongoDBで特定の給与に該当する従業員名のみを取得・表示する方法
MongoDBで特定の給与の従業員名だけを表示するには
MongoDBで特定の給与に該当する従業員名のみを表示したい場合は、クエリ条件に$in演算子を使用し、射影(プロジェクション)を組み合わせて表示するフィールドを絞り込みます。まずは、サンプルドキュメントを含むコレクションを作成しましょう。
サンプルコレクションの作成
以下のようにinsertOne()メソッドを使って、従業員のドキュメントをコレクションに挿入します。
> db.demo666.insertOne({"EmployeeName":"John","EmployeeSalary":25000});
{
"acknowledged" : true,
"insertedId" : ObjectId("5ea1c04824113ea5458c7d0d")
}
> db.demo666.insertOne({"EmployeeName":"Chris","EmployeeSalary":35000});
{
"acknowledged" : true,
"insertedId" : ObjectId("5ea1c05524113ea5458c7d0e")
}
> db.demo666.insertOne({"EmployeeName":"David","EmployeeSalary":65000});
{
"acknowledged" : true,
"insertedId" : ObjectId("5ea1c06024113ea5458c7d0f")
}
> db.demo666.insertOne({"EmployeeName":"Carol","EmployeeSalary":40000});
{
"acknowledged" : true,
"insertedId" : ObjectId("5ea1c06f24113ea5458c7d10")
}コレクション内の全ドキュメントを確認する
find()メソッドを使えば、コレクション内のすべてのドキュメントを表示できます。
> db.demo666.find();
上記のクエリを実行すると、次のような出力が得られます。
{ "_id" : ObjectId("5ea1c04824113ea5458c7d0d"), "EmployeeName" : "John", "EmployeeSalary" : 25000 }
{ "_id" : ObjectId("5ea1c05524113ea5458c7d0e"), "EmployeeName" : "Chris", "EmployeeSalary" : 35000 }
{ "_id" : ObjectId("5ea1c06024113ea5458c7d0f"), "EmployeeName" : "David", "EmployeeSalary" : 65000 }
{ "_id" : ObjectId("5ea1c06f24113ea5458c7d10"), "EmployeeName" : "Carol", "EmployeeSalary" : 40000 }$in演算子で特定の給与に該当する従業員名を取得する
以下のクエリでは、$in演算子を使って給与が「35000」または「40000」のドキュメントを検索し、同時に射影で_idとEmployeeSalaryフィールドを除外しています。これにより、従業員名だけが出力されます。
> db.demo666.find({"EmployeeSalary":{$in:[35000,40000]}},{_id:0,"EmployeeSalary":0});このクエリを実行すると、次の出力が得られます。
{ "EmployeeName" : "Chris" }
{ "EmployeeName" : "Carol" }ポイントのまとめ
- $in演算子:指定した配列内のいずれかの値に一致するドキュメントを検索できます。
- 射影(プロジェクション):第2引数でフィールド名に「0」を指定すると、そのフィールドが結果から除外されます。なお、_idフィールドはデフォルトで表示されるため、非表示にする場合は明示的に「_id:0」を指定する必要があります。
このように、$in演算子と射影を組み合わせることで、条件に合致するドキュメントから必要なフィールドだけを効率よく取得できます。
-
MongoDBで大文字と小文字を区別せずに特定の名前のドキュメントを取得するクエリ
MongoDBで、フィールド値の大文字と小文字の違いに関係なくドキュメントを検索したい場合には、$regex演算子を使用します。この記事では、「David」という名前を持つドキュメントを、大文字・小文字を問わず検索する方法を解説します。サンプルコレクションの作成まず、デモ用のコレクションにドキュメントを挿入します。意図的に「david」「DAVID」「David」など、大文字と小文字が異なる名前を登録している点に注目してください。> db.demo700.insertOne( { details: [ { Name:david }]}); { acknowledged : true
-
【MongoDB】ネストされたドキュメントのキー名のみを抽出して表示する方法
MongoDBでは、配列内にネストされたドキュメント(サブドキュメント)のキー名だけを一覧として取得したいケースがあります。本記事では、insertOne()でサンプルデータを作成し、find()で内容を確認した後、集計パイプラインの$reduce、$objectToArray、$map、$concatArraysを組み合わせて、ネストされたドキュメントのキー名のみを抽出する方法を実行例付きで解説します。 1. サンプルコレクションの作成 まず、insertOne()メソッドを使って、detailsフィールドに複数のドキュメントを持つ配列を含むコレクションを作成します。 > db.dem