1

MySQL データベースに JSON 型の列の 1 つを含むテーブルがあり、次の JSON をレコードの 1 つに保存したとします。

{
  "about": "person",
  "info": [
    {
      "fName": "John",
      "lName": "Booker",
      "sex": "male",
      "age": 20
    },
    {
      "fName": "Laurie",
      "lName": "Sparks",
      "sex": "female"
    },
    {
      "fName": "Adam",
      "lName": "Bate",
      "age": 26
    }
  ]
}

以下だけを抽出する方法はありますか?

[
  {
    "sex": "male",
    "age": 20
  },
  {
    "sex": "female"
  },
  {
    "age": 26
  }
]

$.info[*]これをくれる

[
  {
    "fName": "John",
    "lName": "Booker",
    "sex": "male",
    "age": 20
  },
  {
    "fName": "Laurie",
    "lName": "Sparks",
    "sex": "female"
  },
  {
    "fName": "Adam",
    "lName": "Bate",
    "age": 26
  }
]

と と$.info[*].sex$.info[*].ageはそれぞれ私にこれらを与えます

["male", "female"]

[20, 26]

次のものを入手することでも作業できると思いますが、方法がわかりません

["male", "female", null]

[20, null, 26]

元の問題のコンテキスト

私が現在使用しているアプリケーションは、JSON コンテンツを MySQL データベースに保存します。この JSON には、値が巨大な Base64 でエンコードされた画像である特定のフィールドが含まれる場合があります。クライアントがこれらの Base64 でエンコードされたイメージを取得することを気にしない場合があります。したがって、パフォーマンスを向上させ、データベースからアプリケーションに転送されるデータを削減し、アプリケーション側での処理を回避するために、これらの巨大な画像の保存を伴わない JSON 配列の各 JSON オブジェクト要素のすべてのフィールドを取得したいと考えています。情報。

私の現在の実装は、データベースから JSON オブジェクト全体を取得し、JSON スキーマ (このプロジェクトに触発された) を使用して必要なフィールドを取得することですが、そのパフォーマンスは期待される SLA を満たしていません。アプリケーションにデータを取り込み、必要に応じてさらに処理する前に、MySQL サーバーでできるだけ多くのデータ処理を行いたいと思っています。

PS: 了解しました。AWS S3 のようなものとは異なります。データベースは、大きな JSON ドキュメントを格納するための最適なオプションではない場合があります。しかし、他の NoSQL データストアでは利用できないデータベースのバッチ読み取り機能を利用したい

4

1 に答える 1