我正在尝试对一个json类型的字段进行包含字符串的过滤,因为我想搜索所有的json内容
this._prismaService.service.findMany({ ...args, where: { OR: [ { nameTranslatableJson: { string_contains: filters.search, }, }, ], }, });
但是这个过滤器对我来说不起作用,我不能指定一个路径,因为它必须从根目录进行过滤
json的结构是这样的
{ "defaultText": "Prueba???", "ES": "What???", "EN": "What???" }
如何从根目录过滤任何json内容或者有一个替代方法来进行过滤
如果您想在JSON字段的所有值上执行文本搜索,通常需要使用特定于数据库的函数或运算符。对于PostgreSQL,您可以使用
jsonb_to_tsvector
函数将JSONB数据转换为tsvector
,然后使用PostgreSQL的全文搜索功能。以下是如何使用
prisma.$queryRaw
函数编写使用jsonb_to_tsvector
函数的原始SQL查询的示例: