MongoDBで複数のパラメータをクエリする方法【ドット記法の使い方を解説】
MongoDBで複数のパラメータを条件にドキュメントを検索したい場合、ドット(.)記法を使用することで、ネストされたフィールドにも簡単にアクセスできます。本記事では、実際のコード例を交えながら、複数条件でのクエリ方法をわかりやすく解説します。
サンプルコレクションの作成
まず、検索用のサンプルドキュメントを含むコレクションを作成しましょう。以下の例では、multipleParametersDemoというコレクションに、顧客情報を含むドキュメントを挿入しています。
> db.multipleParametersDemo.insertOne(
... {
... "CustomerName" : "Larry",
... "CustomerDetails" : [
... {
... "CustomerCountryName" : "US",
... "CustomerBankName" : "HDFC",
... "CustomerBalance" : 17363
... }
... ],
... "Purchase" : 1456
... }
... );
{
"acknowledged" : true,
"insertedId" : ObjectId("5cd10f9ce3526dbddbbfb60a")
}
挿入が成功すると、acknowledged: trueと共に、自動生成されたObjectIdが返されます。
登録したドキュメントの確認
find()メソッドを使うと、コレクション内のすべてのドキュメントを表示できます。さらにpretty()を組み合わせると、整形された読みやすい形式で出力されます。
> db.multipleParametersDemo.find().pretty();
実行結果は以下のとおりです。
{
"_id" : ObjectId("5cd10f9ce3526dbddbbfb60a"),
"CustomerName" : "Larry",
"CustomerDetails" : [
{
"CustomerCountryName" : "US",
"CustomerBankName" : "HDFC",
"CustomerBalance" : 17363
}
],
"Purchase" : 1456
}
複数のパラメータでクエリを実行する
それでは本題の、複数のパラメータを組み合わせた検索方法です。ポイントは以下の2つです。
- 最上位フィールド(例:
CustomerName)は、そのままフィールド名を指定する - 配列内やネストされたオブジェクトのフィールド(例:
CustomerCountryName)は、ドット記法で「親フィールド.子フィールド」の形式で指定する
以下の例では、「顧客名がLarry」かつ「国名がUS」という2つの条件を指定して検索し、該当件数をcount()で取得しています。
> db.multipleParametersDemo.find({CustomerName: 'Larry', 'CustomerDetails.CustomerCountryName': 'US'}).count();
実行結果:
1
両方の条件に一致するドキュメントが1件存在するため、結果として「1」が返されました。
まとめ
MongoDBで複数のパラメータをクエリする際は、クエリオブジェクトに条件をカンマ区切りで並べるだけでAND検索が実現できます。ネストされたフィールドを対象にする場合は、ドット記法('親フィールド.子フィールド')を使用する点に注意してください。この基本を押さえておけば、より複雑な条件検索にも応用できます。
-
MongoDBで複数のドキュメントフィールドを完全一致検索するクエリの書き方
MongoDBで複数のフィールドを完全一致させる方法 MongoDBで複数のドキュメントフィールドに対して完全一致の条件を指定してレコードを取得したい場合は、$and演算子と$in演算子を組み合わせます。$in演算子の中に、マッチさせたい値の配列を設定することで、柔軟な完全一致検索が可能になります。 ここでは、実際にサンプルコレクションを作成しながら、具体的な手順を見ていきましょう。 1. サンプルコレクションの作成 まず、insertOne()メソッドを使って、ドキュメントを含むコレクションを作成します。 > db.demo422.insertOne({Name:Chris,Marks
-
MongoDBのfind()クエリでネストされたドキュメントを取得する方法
MongoDBでネストされたドキュメント(入れ子になったサブドキュメントや配列内のオブジェクト)から値を取得するには、「ドット表記(dot notation)」を使用します。この記事では、サンプルコレクションを作成し、find()クエリを使ってネストされたデータを検索する具体的な手順を解説します。 サンプルコレクションの作成 まず、insert()メソッドを使ってドキュメントを含むコレクションを作成しましょう。 > db.demo591.insert([ ... { "Name": "John", "Age": 23 },