postgresql从具有嵌套值的jsonb列生成列

vql8enpb  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(440)

下表中有一个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}
]');

现在我想添加一个生成的向量列。它应该只包含 last_name 在jsonb列中:

ALTER TABLE movies ADD COLUMN search TSVECTOR
    GENERATED ALWAYS AS (TO_TSVECTOR('simple',
        /* need help here ? */
    )) STORED;

有人能帮我怎么做吗?向量应该是这样的 'freeman':2 'robbin':1 db小提琴演示

kuarbcqp

kuarbcqp1#

通过json路径表达式,可以指定json数据中的项。在下面的示例中,只有带有 last_name 将包括:

ALTER TABLE movies ADD COLUMN search TSVECTOR
    GENERATED ALWAYS AS (TO_TSVECTOR('simple',
        jsonb_path_query_array(contributors, '$[*].last_name') /* ✅ */
    )) STORED;

db小提琴演示
谢谢您 RhodiumToad 在#postgresql irc通道中提供此问题的解决方案?‍♂️

相关问题