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

MongoDBでドキュメント内の配列要素を取得する方法

MongoDBのドキュメント内に格納された配列の要素を取得するには、ドット(.)表記を使用します。ドット表記を使うことで、ネストされたフィールドや配列内のオブジェクトのプロパティに直接アクセスできます。

この記事では、実際にコレクションを作成しながら、配列内の要素を取得する手順を解説します。

1. コレクションを作成してドキュメントを挿入する

まず、insertOne()メソッドを使ってサンプルのコレクションにドキュメントを挿入します。ここでは、学生情報を配列として持つドキュメントを作成します。

> db.demo29.insertOne({"StudentDetails":[{"StudentName":"Chris","StudentMarks":58},{"StudentName":"Bob","StudentMarks":69}]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e15fcc08f2315c2efc48e6e")
}
> db.demo29.insertOne({"StudentDetails":[{"StudentName":"David","StudentMarks":97},{"StudentName":"Carol","StudentMarks":96}]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e15fcd38f2315c2efc48e6f")
}

上記のクエリでは、StudentDetailsというフィールドに、学生名(StudentName)と点数(StudentMarks)を持つオブジェクトの配列を格納しています。

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

挿入したドキュメントを確認するために、find()メソッドを使用します。pretty()を組み合わせると、結果が整形されて読みやすく表示されます。

> db.demo29.find().pretty();

このクエリを実行すると、以下のような出力が得られます。

{
   "_id" : ObjectId("5e15fcc08f2315c2efc48e6e"),
   "StudentDetails" : [
      {
         "StudentName" : "Chris",
         "StudentMarks" : 58
      },
      {
         "StudentName" : "Bob",
         "StudentMarks" : 69
      }
   ]
}
{
   "_id" : ObjectId("5e15fcd38f2315c2efc48e6f"),
   "StudentDetails" : [
      {
         "StudentName" : "David",
         "StudentMarks" : 97
      },
      {
         "StudentName" : "Carol",
         "StudentMarks" : 96
      }
   ]
}

3. ドット表記で配列内の要素を検索する

それでは、MongoDBのドキュメント内にある配列の要素を取得してみましょう。以下のように、「フィールド名.サブフィールド名」という形式でドット表記を指定します。

> db.demo29.find({"StudentDetails.StudentName":"David"});

このクエリは、「StudentDetails」配列内のいずれかのオブジェクトの「StudentName」が「David」と一致するドキュメントを検索します。実行すると、次の出力が得られます。

{ "_id" : ObjectId("5e15fcd38f2315c2efc48e6f"), "StudentDetails" : [ { "StudentName" : "David", "StudentMarks" : 97 }, { "StudentName" : "Carol", "StudentMarks" : 96 } ] }

ポイントまとめ

  • 配列内のオブジェクトのプロパティにアクセスするには、「親フィールド.子フィールド」の形式でドット表記を使用します。
  • 条件に一致する要素が配列内のどこかに存在すれば、その配列全体を含むドキュメントが返されます。
  • 特定の位置の要素だけを取得したい場合は、$slice演算子や集計パイプライン($filterなど)を活用すると便利です。

このように、ドット表記をマスターすれば、MongoDBでネストされたデータや配列データを柔軟に扱えるようになります。

  1. MongoDBでドキュメント内の配列オブジェクトを更新する構文とは?

    配列内のオブジェクトを更新する基本手法ドキュメント内の配列に格納されたオブジェクトを更新するには、MongoDBのfindOneAndUpdate()メソッドを使用します。このメソッドは、指定したフィルター条件とソート条件に基づいて、単一のドキュメントを検索して更新できる便利なメソッドです。位置演算子「$」と組み合わせることで、配列内の特定の要素だけをピンポイントで変更できます。1. サンプルコレクションの作成まず、insertOne()メソッドを使って、試験情報を持つサンプルコレクションを作成しましょう。> db.demo553.insertOne( ... { ...  

  2. MongoDBのAggregateでドキュメントと配列要素の平均値を取得する方法

    MongoDBでドキュメントのフィールドおよび配列内の各要素の平均値を求めるには、aggregate()メソッドと$groupステージを組み合わせ、平均を計算する$avg演算子を使用します。ここでは、実際にサンプルコレクションを作成しながら、具体的な手順を解説します。 サンプルコレクションの作成 まず、insertOne()メソッドを使ってドキュメントを挿入し、コレクションを作成します。 > db.demo598.insertOne( ...    { ...       Information:Student, ...   &