我在 mysql5.7 上使用 JSON 对象类型。如果我有一个具有一层的 json 对象,我工作得很好,但是如果我有一个内部有一组对象的对象,我在查询数组中的值时遇到问题。
这是我的表:
id (int) | json_data (JSON)
-----------------------------------------------------------------
1 | {'name':'joe', 'array':[{'prop':first','value':'1'},
| {'prop':second','value':'2'}]}
2 | {'name':'bob', 'array':[{'prop':third','value':'3'}]}
我正在尝试编写一个查询,该查询将检索数组中包含 value=1 的对象的所有记录。
我试过这个查询:
SELECT * from myTable where json_data->'$.array[0].value' = '1';
它有效,但只是因为我正在专门检查数组中的第一个值。如何检查数组的所有元素?
我尝试使用json_data->'$.array[*].value'
, json_data->'$.array[.].value'
, json_data->'$.array[?].value'
,它们都不起作用。
搜索数组的所有元素的方法是什么?