Bookshelf:查询构建器:如何在json列中使用like运算符?

问题描述 投票:0回答:1

我正在使用带有PostgreSQL数据库的书架

信息是json类型的列。

我想检索所有类似于'%pattern%'的列与SQL查询我使用

select * from table where information::text like '%pattern%';

我想用书架查询生成器来做到这一点

model.query(function(qb) {
  qb.where('information', 'LIKE', '%pattern%')
}).fetch()

但是它没有用,我在bookshelf docs中找不到如何做的方法

任何想法?

sql json postgresql knex.js bookshelf.js
1个回答
0
投票

您只需要将json转换为字符串,即可在其上使用字符串函数LIKE

qb.where('information::text', 'LIKE', '%pattern%')

请注意,这是蛮力技术。这也是非常不准确的,因为它将部分或全部地模糊地匹配键或值。

取决于您的确切用例,可能会有更好的选择,例如使用jsonb_path_exists()遍历对象。

© www.soinside.com 2019 - 2024. All rights reserved.