首页 > 解决方案 > mariadb json对象数组过滤属性条件

问题描述

test_js结构:

`id` int(11) unsigned NOT NULL AUTO_INCREMENT
`json` JSON

数据:

`id`    `json`

`1`     `[{"id": 1, "size": 1, "ver": 0},{"id": 2, "size": 3, "ver": 1},{"id": 1, "size": 3, "ver": 2}]`
`2`     `[{"id": 1, "size": 3, "ver": 0}]`
`3`     `[{"id": 1, "size": 2, "ver": 3}]`

我需要根据条件返回过滤的对象数组 {"id": 1, "size": 3}

我尝试 JSON_CONTAINS:

select `json` 
from `test_js` 
WHERE JSON_CONTAINS(`json`, JSON_OBJECT("id", 1, "size", 3), '$');

我得到:

[{"id": 1, "size": 1, "ver": 0}, {"id": 2, "size": 3, "ver": 1}, {"id": 1, "size": 3, "ver": 2}]
[{"id": 1, "size": 3, "ver": 0}]

但我需要喜欢:

[{"id": 1, "size": 3, "ver": 2}]
[{"id": 1, "size": 3, "ver": 0}]

是否有 JSON 函数的任何组合来获得所需的结果?
当前版本 - MariaDB 10.3.12

标签: mysqljsonmariadb

解决方案


推荐阅读