2016-09-08 38 views
1

我與value以下架構爲JSON類型問題與陣列搜索對象的屬性JSON數據類型

mysql> select * from people; 
+------+---------------------------------------------------------------------------+ 
| id | value                  | 
+------+---------------------------------------------------------------------------+ 
| blah | {"key1": "value1", "key2": "value2"}          | 
| foo | {"key1": "value1", "friends": [{"friendId": "123"}, {"friendId": "foo"}]} | 
+------+---------------------------------------------------------------------------+ 

我希望下面的查詢返回我行foo,但事實並非如此。

mysql> select * from people where value->'$.friends[*].friendId' = "123"; 
Empty set 

條件value->'$.friends[*].friendId'似乎有效,因爲它適用於下面的查詢:

mysql> select value->'$.friends[*].friendId' from people; 
+---------------------------------+ 
| value->'$.friends[*].friendId' | 
+---------------------------------+ 
| NULL       | 
| ["123", "foo"]     | 
+---------------------------------+ 

那麼怎麼來查詢select * from people where value->'$.friends[*].friendId' = "123";回報沒有結果?

回答

0

使用JSON_CONTAINS與JSON數組值我的作品很感興趣:

select * from people where JSON_CONTAINS (value, {"friends": [{"friendId": "123"}]});