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

MongoDBでJSONデータの内部の値を取得する方法|find()とドット表記の使い方

MongoDBでネストされたJSONデータの中にある内部の値を取得したい場合は、find()メソッドとドット(.)表記を組み合わせることで実現できます。この記事では、実際にサンプルコレクションを作成しながら、配列内のオブジェクトに含まれる特定のフィールドだけを取り出す手順をわかりやすく解説します。

1. サンプルコレクションの作成

まず、insertOne()メソッドを使って、配列やネストされたオブジェクトを含むドキュメントをコレクションに挿入します。

> db.demo235.insertOne(
...  {
...     "id":101,
...     "details":[
...        {
...           "Name":"Chris Brown",
...           "Age":21
...        },
...        {
...           "Name":"David Miller",
...           "Age":24
...        }
...     ],
...     "otherdetails":[
...        {
...           "Score":56,
...           "Subject":"MongoDB"
...        },
...        {
...           "Score":78,
...           "Subject":"MySQL"
...        }
...     ]
...  }
...);
{
   &;"acknowledged" : true,
   &;"insertedId" : ObjectId("5e418d22f4cebbeaebec514b")
}

2. 登録したドキュメントの確認

find()メソッドを使うと、コレクション内のすべてのドキュメントを表示できます。出力を見やすく整えるために、pretty()メソッドを併用しましょう。

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

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

{
   &;"_id" : ObjectId("5e418d22f4cebbeaebec514b"),
   &;"id" : 101,
   &;"details" : [
      {
         "Name" : "Chris Brown",
         "Age" : 21
      },
      {
         "Name" : "David Miller",
         "Age" : 24
      }
   ],
   &;"otherdetails" : [
      {
         "Score" : 56,
         "Subject" : "MongoDB"
      },
      {
         "Score" : 78,
         "Subject" : "MySQL"
      }
   ]
}

3. ドット表記で内部の値を取得する

ネストされたフィールドの値を取得するには、find()メソッドの第2引数(プロジェクション)で「otherdetails.Subject」のようにドット表記でパスを指定します。「_id:0」と設定することで、デフォルトで表示される_idフィールドを出力から除外できます。

> db.demo235.find({},{"otherdetails.Subject":1,_id:0});

実行結果は以下のとおりです。

{ "otherdetails" : [ { "Subject" : "MongoDB" }, { "Subject" : "MySQL" } ] }

このように、ドット表記を活用すれば、配列内のオブジェクトに格納された特定のフィールドだけを簡単に抽出できます。なお、特定の値を持つドキュメントを絞り込みたい場合も、クエリ条件側に同じく「otherdetails.Subject」のようにドット表記を指定することで柔軟に対応可能です。

  1. MongoDBで特定の値と2つの日付範囲を条件にデータを取得し、グループ化して合計とカウントを求める方法

    MongoDBで条件に一致するドキュメントを絞り込むには $match を使用し、2つの日付の間のデータを取得するには $gte(以上)と $lte(以下)を組み合わせます。1. サンプルコレクションの作成まず、ドキュメントを含むコレクションを作成しましょう。> db.demo560.insertOne({value1:40,value2:40,shippingDate:new ISODate(2020-02-26)});{ acknowledged : true, insertedId : ObjectId(5e8f3d5254b4472ed3e8e867) } > db

  2. MySQLで複数カラムの最小値を取得する方法|LEAST()関数の使い方を解説

    はい、MySQLではLEAST()関数を使用することで、複数のカラム(フィールド)の中から最小値を簡単に取得できます。select least(カラム名1, カラム名2, ...N) from テーブル名;LEAST()関数は、引数として渡された複数の値を比較し、その中で最も小さい値を返します。数値だけでなく文字列や日付型にも対応しているため、「複数の日付カラムから最も古い日付を取り出したい」といったケースでも活用できます。サンプルテーブルの作成まず、動作確認用のテーブルを作成しましょう。mysql> create table DemoTable -> ( ->