Rumah > Soal Jawab > teks badan
Saya cuba menapis medan jenis json yang mengandungi rentetan kerana saya ingin mencari semua kandungan json
this._prismaService.service.findMany({ ...args, where: { OR: [ { nameTranslatableJson: { string_contains: filters.search, }, }, ], }, });
Tetapi penapis ini tidak berfungsi untuk saya, saya tidak dapat menentukan laluan kerana ia perlu menapis dari akar
Struktur json adalah seperti ini
{ "defaultText": "Prueba???", "ES": "What???", "EN": "What???" }
Bagaimana untuk menapis mana-mana kandungan json dari direktori akar atau adakah terdapat cara alternatif untuk melakukan penapisan
P粉2621135692023-09-22 00:52:31
Jika anda ingin melakukan carian teks pada semua nilai medan JSON, anda biasanya perlu menggunakan fungsi atau pengendali khusus pangkalan data. Untuk PostgreSQL, anda boleh menggunakan jsonb_to_tsvector
函数将JSONB数据转换为tsvector
dan kemudian menggunakan fungsi carian teks penuh PostgreSQL.
Berikut ialah contoh cara menggunakan pertanyaan SQL mentah dengan fungsi prisma.$queryRaw
函数编写使用jsonb_to_tsvector
:
const searchResults = await this._prismaService.$queryRaw` SELECT * FROM "Service" WHERE to_tsvector('english', "nameTranslatableJson"::text) @@ plainto_tsquery('english', ${filters.search}) `;