MongoDB
 Computer >> コンピューター >  >> プログラミング >> MongoDB

MongoDBでJSON配列の内部要素にアクセスする方法|ドット記法の使い方を解説

MongoDBでJSON配列の内部要素にアクセスするには、ドット記法(dot notation)を使用します。本記事では、実際にコレクションを作成し、ネストされた配列内のフィールドを検索する具体的な手順を、サンプルコードと実行結果とともに解説します。

サンプルデータの作成

まず、insert()メソッドを使って、ネストされた構造を持つドキュメントを含むコレクションを作成しましょう。

> db.demo687.insert({CountryName:'US',
... info:
... {
... id:101,
... details:
... [
... {
...    Name:'Chris',
...    SubjectName:'MongoDB',
...    otherDetails:{
...       "Marks":58,
...       Age:23
...    }
... }
... ]
... }
... }
... )
WriteResult({ "nInserted" : 1 })
> db.demo687.insert({CountryName:'UK',
... info:
... {
... id:102,
... details:
... [
... {
...    Name:'David',
...    SubjectName:'MySQL',
...    otherDetails:{
...       "Marks":78,
...       Age:21
...    }
... }
... ]
... }
... }
... )
WriteResult({ "nInserted" : 1 })

ここでは、「info」オブジェクトの中に「details」という配列があり、その配列内のオブジェクトにさらに「otherDetails」というネストされたオブジェクトが含まれています。このような深い階層構造こそ、ドット記法が活躍する場面です。

find()メソッドですべてのドキュメントを表示する

find()メソッドを使用すると、コレクション内のすべてのドキュメントを確認できます。

> db.demo687.find();

上記のコマンドを実行すると、次のような出力が得られます。

{ "_id" : ObjectId("5ea55658a7e81adc6a0b3962"), "CountryName" : "US", "info" : { "id" : 101, "details" : [ { "Name" : "Chris", "SubjectName" : "MongoDB", "otherDetails" : { "Marks" : 58, "Age" : 23 } } ] } }
{ "_id" : ObjectId("5ea55673a7e81adc6a0b3963"), "CountryName" : "UK", "info" : { "id" : 102, "details" : [ { "Name" : "David", "SubjectName" : "MySQL", "otherDetails" : { "Marks" : 78, "Age" : 21 } } ] } }

JSON配列の内部要素にアクセスするクエリ

それでは本題です。JSON配列の内部要素にアクセスするには、アクセスしたいフィールドまでのパスをドット(.)でつなぎます。例えば、details配列内のotherDetailsオブジェクトにあるMarksフィールドを検索する場合は、次のように記述します。

> db.demo687.find({"info.details.otherDetails.Marks":58});

このクエリを実行すると、Marksの値が58であるドキュメントのみが抽出されます。

{ "_id" : ObjectId("5ea55658a7e81adc6a0b3962"), "CountryName" : "US", "info" : { "id" : 101, "details" : [ { "Name" : "Chris", "SubjectName" : "MongoDB", "otherDetails" : { "Marks" : 58, "Age" : 23 } } ] } }

まとめ

このように、MongoDBでは配列内のオブジェクトに対しても、ドット記法を使えばインデックス番号を意識せずに直接アクセスできます。条件に一致する要素が配列内のどこにあっても、自動的に該当ドキュメントを検出してくれるため、ネストされたJSONデータの検索は非常にシンプルです。複雑な階層構造を持つドキュメントを扱う際は、ぜひこの手法を活用してみてください。

  1. MongoDBの配列から要素を削除する方法:$pull演算子の使い方

    MongoDBでドキュメント内の配列から特定の要素を削除したい場合は、更新演算子の $pull を使用します。この記事では、実際のコード例を使いながら、$pullによる配列要素の削除手順をわかりやすく解説します。1. サンプルコレクションの作成まず、insertOne() メソッドを使って、数値の配列を持つドキュメントを含むコレクションを作成します。> db.demo279.insertOne({id:[101,103,105,110]}); { acknowledged : true, insertedId : ObjectId(5e490af7dd099650a5401a

  2. MongoDBで配列の要素を削除するには?$pull演算子の使い方を解説

    MongoDBで配列から要素を削除する基本MongoDBで配列内の要素を削除したい場合は、$pull演算子を使用します。$pullは、既存の配列から指定した値、または条件に一致するすべてのインスタンスを取り除くための更新演算子です。この記事では、実際にコレクションを作成し、ネストされた配列から特定の要素を削除する手順を順番に解説します。サンプルコレクションの作成まず、ドキュメントを含むコレクションを作成しましょう。ここでは「software」フィールドの中に「services」という配列を持つドキュメントを挿入します。db.demo541.insertOne({software:{servic