我正在使用带有PostgreSQL数据库的书架
信息是json类型的列。
我想检索所有类似于'%pattern%'的列与SQL查询我使用
select * from table where information::text like '%pattern%';
我想用书架查询生成器来做到这一点
model.query(function(qb) {
qb.where('information', 'LIKE', '%pattern%')
}).fetch()
但是它没有用,我在bookshelf docs中找不到如何做的方法
任何想法?
您只需要将json转换为字符串,即可在其上使用字符串函数LIKE
:
qb.where('information::text', 'LIKE', '%pattern%')
请注意,这是蛮力技术。这也是非常不准确的,因为它将部分或全部地模糊地匹配键或值。
取决于您的确切用例,可能会有更好的选择,例如使用jsonb_path_exists()
遍历对象。