Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

238
Vistas
Columna generada por PostgreSQL a partir de una columna JSONB con valores anidados

Tengo la siguiente tabla con una columna JSONB:

 CREATE TABLE movies ( contributors JSONB );

Los datos en la columna se ven así:

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

Ahora quiero agregar una columna generada de vectores. Solo debe contener last_name de la columna JSONB:

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

¿Alguien puede ayudarme a hacer eso? Los vectores deberían verse así 'freeman':2 'robbin':1 Demostración en DB Fiddle

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Con la expresión JSON Path puede especificar los elementos en los datos JSON. Con el siguiente ejemplo, solo se incluirán los elementos con la clave last_name :

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

Demostración en DB Fiddle

Gracias RhodiumToad en el canal IRC #postgresql por brindar una solución a este problema 🙇‍♂️

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda