Typeorm查找json数据

1,349 阅读1分钟

如果没记错的话,从mysql 5.7开始,新增了json数据格式的支持。但是,我一般都当成text使用,特别是在搜索的时候,用like方法去检索。

今天,给大家展示一下使用typeorm查询json数据

现在

image.png

属性提取:JSON_EXTRACT(字段名, '$.属性名')

  • 将JSON中的一位提取为一列单独的列可以对其进行排序分组 (推荐在需要排序、分组特殊情况时使用)
  • 由于提取后将生成新的一列,所以不能使用getMany(无法有效还原object)

image.png

数组搜索:JSON_CONTAINS(字段名,JSON_ARRAY(数字))

  • 检索 JSON 的 number[] 中包含该数字的数据

image.png

image.png

对象检索:JSON_CONTAINS(字段名,JSON_OBJECT(属性名,查询值))

image.png

image.png

数据表格如下图

image.png

特殊字段介绍:simple-array

  • 该类型是存储的是字符串、但是从数据中查询出来后是数组

image.png

ps.写完这篇文章之后,特意去百度了一下,原来是我孤陋寡闻了。::>_<::

Mysql5.7版本以后新增的功能,Mysql提供了一个原生的Json类型,Json值将不再以字符串的形式存储,而是采用一种允许快速读取文本元素(document elements)的内部二进制(internal binary)格式,并提供了不少内置函数,通过计算列,甚至还可以直接索引json中的数据。

在Json列插入或者更新的时候将会自动验证Json文本,未通过验证的文本将产生一个错误信息。Json文本采用标准的创建方式,可以使用大多数的比较操作符进行比较操作,例如:=, <, <=, >, >=, <>, != 和 <=>。