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

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

下表中有一个jsonb列:

  1. CREATE TABLE movies (
  2. contributors JSONB
  3. );

列中的数据如下所示:

  1. INSERT INTO movies (contributors) VALUES('[
  2. {"last_name": "Robbins", "first_name": "Tim", "age": 61},
  3. {"last_name": "Freeman", "first_name": "Morgan", "age": 83}
  4. ]');

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

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

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

kuarbcqp

kuarbcqp1#

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

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

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

相关问题