J'essaie de filtrer un champ de type json qui contient des chaînes car je souhaite rechercher tout le contenu json
this._prismaService.service.findMany({ ...args, where: { OR: [ { nameTranslatableJson: { string_contains: filters.search, }, }, ], }, });
Mais ce filtre ne fonctionne pas pour moi, je ne peux pas spécifier de chemin car il doit filtrer depuis la racine
La structure de json est comme ça
{ "defaultText": "Prueba???", "ES": "What???", "EN": "What???" }
Comment filtrer tout contenu json du répertoire racine ou existe-t-il un autre moyen de filtrer
Si vous souhaitez effectuer une recherche de texte sur toutes les valeurs d'un champ JSON, vous devez généralement utiliser une fonction ou un opérateur spécifique à la base de données. Pour PostgreSQL, vous pouvez utiliser
jsonb_to_tsvector
函数将JSONB数据转换为tsvector
puis utiliser la fonctionnalité de recherche en texte intégral de PostgreSQL.Voici un exemple d'utilisation d'une requête SQL brute avec la fonction
prisma.$queryRaw
函数编写使用jsonb_to_tsvector
: