【问题标题】:MySQL, json data type, returning limited number of resultsMySQL,json数据类型,返回有限数量的结果
【发布时间】:2017-06-21 15:53:11
【问题描述】:

假设我有一个看起来像这样的 json 字段

{
   "unknownkey":{..},
   "unknownkey":{..},
   "unknownkey":{..},
}

对于特定用户,我可以轻松地使用该字段进行 CRUD,而无需求助于 mysql 的 json 搜索功能,因为未知键包括用户 ID(因此变得已知)。我可以通过路径来定位它。

我遇到的问题是从中获得通用结果。

1) 当密钥未知时,我如何从中获取第一个结果?

2) 如何限制结果的数量?比如说,我只想要 25 个结果,而不是整个 json 文档(可能很大)。

3) 如果我想要 NEXT 25 个结果(又名 25-50)怎么办。

对于 (1),我尝试将 mysql 变量设置为类似

@test = JSON_KEYS(fieldname, '$')[0]

然后将其插入我的参考中

fieldname->'$.[@test]'

类似的东西,有不同的变化,不能让它发挥作用。我也不喜欢这种类型的选项,似乎应该有更简单的方法。

对于 (2) 和 (3),我搜索了 https://dev.mysql.com/doc/refman/5.7/en/json-search-functions.html,但似乎在任何地方都找不到。

感谢任何帮助/想法!

【问题讨论】:

  • 在 json 上使用内置函数时,它会解析文档,从而处理所有值。要在实际解析中限制为 25 个值,您必须创建自己的解析器(当 mysql 中的整个 json 解析器不稳定时,我构建了一个:20 行代码应该可以做到)

标签: mysql json


【解决方案1】:

仅供参考,MySQL 8 提供了解决方案(对未知数量的对象数组提供了非常好的支持),因此请查看 MySQL 8 文档。我相信最近的里程碑版本已经发布了,但该版本还为时过早,还不能被认为是稳定的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-12
    • 1970-01-01
    相关资源
    最近更新 更多