MariaDB使用动态键汇总JSON对象的总和

时间:2019-11-13 19:46:42

标签: mysql json mariadb mysql-json

我正在运行MariaDB 10.2.29,并开始探索JSON数据类型。我正在尝试了解如何按动态JSON键分组,并总结它们的嵌套值。例如,该表在“数据”字段条目中包含以下内容:

MariaDB [vstats]> select data from top_domains where vtime >= '1573666140' and vtime <= '1573666200' limit 2\G
*************************** 1. row ***************************
 data: {"domain1.com":{"total":"260","cached":"153"},"domain2.com":{"total":"1501","cached":"1170"},"domain3.com":{"total":"212","cached":"190"},"domain4.com":{"total":"1206","cached":"1118"},"domain5.com":{"total":"353","cached":"285"},"domain6.com":{"total":"216","cached":"41"},"domain7.com":{"total":"112","cached":"78"},"domain8.com":{"total":"220","cached":"194"},"domain9.com":{"total":"95","cached":"62"},"domain10.com":{"total":"99","cached":"18"}}
*************************** 2. row ***************************
 data: {"domain1.com":{"total":"240","cached":"166"},"domain2.com":{"total":"1644","cached":"1279"},"domain3.com":{"total":"195","cached":"174"},"domain4.com":{"total":"1276","cached":"1185"},"domain12.com":{"total":"84","cached":"72"},"domain5.com":{"total":"373","cached":"258"},"domain6.com":{"total":"92","cached":"13"},"domain7.com":{"total":"148","cached":"102"},"domain11.com":{"total":"217","cached":"25"},"domain8.com":{"total":"380","cached":"345"}}
2 rows in set (0.00 sec)

MariaDB [vstats]> 

“ vtime”字段包含记录统计信息时的纪元值。我想要得到的是一个JSON对象,该对象按域名/ JSON密钥分组,并包含“ total”和“ cached”值的总和。我使用针对json_keys(data,'$')值的嵌套选择开始了一条路径,但是对于遍历数千个条目而言,它似乎并不是最佳选择。

我想要使用JSON表类型的主要原因是:

  • 输入数据来自编码为JSON对象的Perl哈希
  • 使用jQuery解析和绘制输出数据
  • 减小表的大小(我尝试使用普通列和主键 vtime和域,但增长速度太快了
  • 使用不必为输入/输出进行操纵的数据集格式

任何指针将不胜感激。

0 个答案:

没有答案