MongoDBクエリでサブドキュメント(埋め込みドキュメント)にアクセスする方法
MongoDBでサブドキュメント(埋め込みドキュメント)にアクセスするには、find()メソッドとドット表記(dot notation)を組み合わせて使用します。ドット表記では、「親フィールド名.子フィールド名」の形式でネストされたフィールドを指定できます。
1. コレクションとドキュメントの作成
まず、サブドキュメントを含むドキュメントを持つコレクションを作成しましょう。
> db.demo670.insertOne({
... id:101,
... "details":
... {
... Name:"Chris",
... Age:21,
... CountryName:"US",
... SubjectName:"MongoDB"
... }
... }
... );
{
"acknowledged" : true,
"insertedId" : ObjectId("5ea3e31d04263e90dac943de")
}
> db.demo670.insertOne({ id:102, "details": { Name:"David", Age:22, CountryName:"UK", SubjectName:"MySQL" } } );
{
"acknowledged" : true,
"insertedId" : ObjectId("5ea3e33604263e90dac943df")
}この例では、各ドキュメントが「details」というフィールドの中に、Name、Age、CountryName、SubjectNameといった情報を持つサブドキュメントを格納しています。
2. コレクション内の全ドキュメントを表示する
find()メソッドを使用して、コレクション内のすべてのドキュメントを表示します。
> db.demo670.find();
このクエリを実行すると、以下のような出力が得られます。
{ "_id" : ObjectId("5ea3e31d04263e90dac943de"), "id" : 101, "details" : { "Name" : "Chris", "Age" : 21, "CountryName" : "US", "SubjectName" : "MongoDB" } }
{ "_id" : ObjectId("5ea3e33604263e90dac943df"), "id" : 102, "details" : { "Name" : "David", "Age" : 22, "CountryName" : "UK", "SubjectName" : "MySQL" } }3. ドット表記でサブドキュメントにアクセスする
以下が、ドット表記を使ってサブドキュメントのフィールドを検索条件に指定し、かつ投影(projection)で特定のフィールドのみを取得するクエリの例です。
> db.demo670.find({"details.SubjectName":"MongoDB"},{"details.CountryName":1});このクエリを実行すると、以下のような出力が得られます。
{ "_id" : ObjectId("5ea3e31d04263e90dac943de"), "details" : { "CountryName" : "US" } }クエリのポイント
- 検索条件:
{"details.SubjectName":"MongoDB"}の部分で、サブドキュメント内のSubjectNameが「MongoDB」であるドキュメントだけを絞り込んでいます。 - 投影(projection):
{"details.CountryName":1}の部分で、取得するフィールドをCountryNameに限定しています。_idはデフォルトで表示されるため、必要なければ{"_id":0}を追加して非表示にすることも可能です。
このように、MongoDBではドット表記を活用することで、ネストされたサブドキュメントのフィールドに対して柔軟に検索やフィールド指定を行うことができます。
-
MongoDBで大文字と小文字を区別しない検索(クエリ)を行う方法
MongoDBで大文字と小文字を区別せずに検索したい場合は、正規表現を使用します。本記事では、実際にドキュメントを含むコレクションを作成しながら、ケースインセンシティブ(大文字小文字を無視した)クエリの書き方を具体例とともに解説します。サンプルコレクションの作成まずは動作確認のため、コレクション「caseInsensitiveDemo」に複数のドキュメントを挿入します。「David」「DAVID」「david」「daVID」など、同じ名前でも大文字・小文字の組み合わせが異なるデータを用意するのがポイントです。挿入に使うクエリは以下の通りです。> db.caseInsensitiveDem
-
MongoDBでコンソールをクリアする2つの方法|ショートカット「Ctrl + L」とコマンド「cls」の使い方
MongoDBのシェル(mongo / mongosh)を使っていると、実行したクエリや結果がどんどん積み重なり、画面が見づらくなることがあります。そんなときに便利なのがコンソールのクリア機能です。MongoDBでは、以下の2つの方法でコンソールをクリアできます。 方法1:キーボードショートカット「Ctrl + L」を使う 最も手軽なのが、キーボードショートカットを使う方法です。次のキーを押すだけで、即座にコンソールをクリアできます。 Ctrl + L このキーを押すと、それまで表示されていたログや実行結果がすべて消え、まっさらな状態になります。Linuxのターミナルなどと同じ操作感なので、