我正在尝试对一个json类型的字段进行包含字符串的过滤,因为我想搜索所有的json内容
this._prismaService.service.findMany({
...args,
where: {
OR: [
{
nameTranslatableJson: {
string_contains: filters.search,
},
},
],
},
});
但是这个过滤器对我来说不起作用,我不能指定一个路径,因为它必须从根目录进行过滤
json的结构是这样的
{
"defaultText": "Prueba???",
"ES": "What???",
"EN": "What???"
}
如何从根目录过滤任何json内容或者有一个替代方法来进行过滤
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
如果您想在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}) `;