MongoDBでハッシュの配列を検索する方法【ドット記法の使い方を解説】
MongoDBでは、ドット記法(dot notation)を活用することで、配列内に格納されたハッシュ(埋め込みドキュメント)のフィールドを簡単に検索できます。本記事では、実際のサンプルコードを通じて、その具体的な手順をわかりやすく解説します。
サンプルコレクションの作成
まず、検索用のコレクションにドキュメントを挿入してデータを準備します。各ドキュメントには、TechnicalDetailsというフィールドにハッシュの配列が格納されています。
> db.searchAnArrayDemo.insertOne({_id:1,"TechnicalDetails":[{"Language":"MongoDB"}]});
{ "acknowledged" : true, "insertedId" : 1 }
> db.searchAnArrayDemo.insertOne({_id:2,"TechnicalDetails":[{"Language":"MySQL"}]});
{ "acknowledged" : true, "insertedId" : 2 }
> db.searchAnArrayDemo.insertOne({_id:3,"TechnicalDetails":[{"Language":"MongoDB"}]});
{ "acknowledged" : true, "insertedId" : 3 }
> db.searchAnArrayDemo.insertOne({_id:4,"TechnicalDetails":[{"Language":"MongoDB"}]});
{ "acknowledged" : true, "insertedId" : 4 }
> db.searchAnArrayDemo.insertOne({_id:5,"TechnicalDetails":[{"Language":"Java"}]});
{ "acknowledged" : true, "insertedId" : 5 }登録済みドキュメントの確認
find()メソッドを使用すると、コレクション内のすべてのドキュメントを表示できます。pretty()を付けることで、見やすい整形された形式で出力されます。
> db.searchAnArrayDemo.find().pretty();
上記のクエリを実行すると、以下のような結果が得られます。
{ "_id" : 1, "TechnicalDetails" : [ { "Language" : "MongoDB" } ] }
{ "_id" : 2, "TechnicalDetails" : [ { "Language" : "MySQL" } ] }
{ "_id" : 3, "TechnicalDetails" : [ { "Language" : "MongoDB" } ] }
{ "_id" : 4, "TechnicalDetails" : [ { "Language" : "MongoDB" } ] }
{ "_id" : 5, "TechnicalDetails" : [ { "Language" : "Java" } ] }ハッシュの配列を検索するクエリ
配列内のハッシュを検索するには、「フィールド名.キー名」という形式のドット記法を使用します。たとえば、Languageが「MongoDB」であるドキュメントの件数を取得したい場合は、次のようにcount()メソッドと組み合わせて記述します。
> db.searchAnArrayDemo.find({'TechnicalDetails.Language':'MongoDB'}).count();実行結果は以下の通りです。
3
ポイントまとめ
このように、配列の中にハッシュがネストしていても、ドット記法を使えば内部のフィールドへ直接アクセスできます。MongoDBは自動的に配列内のすべての要素を走査し、条件に一致するドキュメントだけを返してくれるため、複雑な構造のデータでもシンプルなクエリで効率的に検索できるのが大きな魅力です。
-
MongoDBでオブジェクトの配列を検索できますか?
MongoDBでオブジェクト配列を検索する方法はい、MongoDBではオブジェクトの配列を検索することが可能です。集計パイプライン(aggregate())の中で$unwindを使って配列を展開し、$matchで条件に一致する要素を抽出します。ここでは、実際の手順をサンプルコードとともに解説します。1. コレクションの作成とドキュメントの挿入まず、insertOne()メソッドを使って、オブジェクト配列を含むドキュメントをコレクションに登録します。> db.demo623.insertOne( ... { ... _id:1, ... details:
-
MongoDBでサブドキュメントの配列をクエリする方法
MongoDBでサブドキュメントの配列をクエリするには、集計パイプラインの$unwindを使用します。$unwindは、配列フィールドを展開し、配列の各要素ごとに個別のドキュメントを生成するステージです。これにより、配列内のサブドキュメントを個別にフィルタリングできるようになります。ここでは、大学の情報を含むコレクションを作成し、その中から特定の条件に一致するサブドキュメントを抽出する手順を解説します。コレクションの作成まず、insertOne()メソッドを使って、サブドキュメントの配列を含むドキュメントを挿入しましょう。> db.demo499.insertOne({... "