【发布时间】:2018-10-08 16:50:25
【问题描述】:
假设我的 MySQL 数据库中有一个表,其中包含 JSON 类型的列之一,并且我已将以下 JSON 保存在其中一个记录中
{
"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 Schema 获取必要的字段(受 this 项目的启发),但它的性能不符合预期的 SLA。我真的很想在 MySQL 服务器上进行尽可能多的数据处理,然后再将其放入我的应用程序并在需要时对其进行进一步处理。
PS:我明白;不像 AWS S3 之类的东西;数据库可能不是存储大型 JSON 文档的最佳选择。但我想利用其他 NoSQL 数据存储可能不具备的数据库的批量读取功能
【问题讨论】:
标签: mysql json mysql-json