Prisma ORM没有基本路径的Json string_contains方法
P粉988025835
P粉988025835 2023-09-21 13:41:24
0
1
645

我正在尝试对一个json类型的字段进行包含字符串的过滤,因为我想搜索所有的json内容

this._prismaService.service.findMany({
          ...args,
          where: {
            OR: [
              {
                nameTranslatableJson: {
                  string_contains: filters.search,
                },
              },
            ],
          },
});

但是这个过滤器对我来说不起作用,我不能指定一个路径,因为它必须从根目录进行过滤

json的结构是这样的

{
  "defaultText": "Prueba???",
  "ES": "What???",
  "EN": "What???"
}

如何从根目录过滤任何json内容或者有一个替代方法来进行过滤

P粉988025835
P粉988025835

全部回复(1)
P粉262113569

如果您想在JSON字段的所有值上执行文本搜索,通常需要使用特定于数据库的函数或运算符。对于PostgreSQL,您可以使用jsonb_to_tsvector函数将JSONB数据转换为tsvector,然后使用PostgreSQL的全文搜索功能。

以下是如何使用prisma.$queryRaw函数编写使用jsonb_to_tsvector函数的原始SQL查询的示例:

const searchResults = await this._prismaService.$queryRaw`
  SELECT *
  FROM "Service"
  WHERE to_tsvector('english', "nameTranslatableJson"::text) @@ plainto_tsquery('english', ${filters.search})
`;
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板