通过数据库prisma进行模糊查找



我正在尝试构建一个存储管理器,用户可以在其中存储他们的实验室样本/数据。不幸的是,这意味着表最终将是非常动态的,因为每个样本可能都有不同的数据关联。我仍然需要用户定义一个模式,这样我就可以正确地显示数据,但是,我认为这个模式必须在底层数据库中表示为JSON字段。

我想知道,在Prisma,有没有一种方法可以模糊搜索藏品。我可以键入类似help的内容,然后在其列中返回与此表达式ANYWHERE匹配的所有行吗?(包括JSON字段(。我能用posgresql做这样的事情吗?或者使用MongoDB?

谢谢

在PostgreSQL中使用jsonb可以轻松做到这一点。

如果你有一个像一样定义的表格

CREATE TABLE userdata (
id bigint PRIMARY KEY,
important_col1 text,
important_col2 integer,
other_cols jsonb
);

你可以创建一个类似的索引

CREATE INDEX ON userdata USING gin (other_cols);

使用进行高效搜索

SELECT id FROM userdata WHERE other_cols @> '{"attribute": "value"}';

这里,@>是PostgreSQL中的JSON包含运算符。

是的,在PostgreSQL中你肯定可以做到这一点。这很简单。下面是一个例子
将您的表命名为the_table,别名为tht。将整个表行强制转换为文本tht::text,并使用不区分大小写的正则表达式匹配运算符~*来查找此文本中包含帮助的行。您也可以使用更精细、更强大的正则表达式进行搜索
请注意,由于~*运算符会破坏任何索引,因此此查询将导致顺序扫描。

select * -- or whatever list of expressions you need
from the_table as tht
where tht::text ~* 'help';

最新更新