我有一个带有JSONB列的下表:
CREATE TABLE movies (
contributors JSONB
);
该列中的数据如下:
INSERT INTO movies (contributors) VALUES('[
{"last_name": "Robbins", "first_name": "Tim", "age": 61},
{"last_name": "Freeman", "first_name": "Morgan", "age": 83}
]');
现在,我想添加矢量的生成列。它只应包含JSONB列的last_name
:
ALTER TABLE movies ADD COLUMN search TSVECTOR
GENERATED ALWAYS AS (TO_TSVECTOR('simple',
/* need help here ? */
)) STORED;
任何人都可以帮助我做到这一点吗?向量应该看起来像这样'freeman':2 'robbin':1
Demo on DB Fiddle
答案 0 :(得分:0)
使用JSON Path expression,您可以在JSON数据中指定项目。在以下示例中,仅包含键为last_name
的项目:
ALTER TABLE movies ADD COLUMN search TSVECTOR
GENERATED ALWAYS AS (TO_TSVECTOR('simple',
jsonb_path_query_array(contributors, '$[*].last_name') /* ✅ */
)) STORED;
感谢RhodiumToad
在#postgresql IRC频道中为此问题提供了解决方案?♂️