2017-10-10 3 views
0

Je souhaite mettre à jour mon champ jsonb dans la zone de stockage de l'objet. Je veux ajouter un nouvel objet dedans.Comment ajouter un objet dans le champ postgresql jsonb pendant la mise à jour

CREATE TABLE justjson (id INTEGER, doc JSONB); 
INSERT INTO justjson VALUES (1, '[ 
    { 
    "name": "abc", 
    "age": "22" 
    }, 
    { 
    "name": "def", 
    "age": "23" 
    } 
]'); 

alors la valeur comme

select doc from justjson; 

doc 
[{"age": "22", "name": "abc"}, {"age": "23", "name": "def"}] 

Maintenant, je veux ajouter nouvel objet dans ce jsonb

{"age": "45", "name": "xyz"} 

Comment puis-je mettre à jour ce domaine?

ma sortie comme

doc 
    [{"age": "22", "name": "abc"}, {"age": "23", "name": "def"},{"age": "45", "name": "xyz"}] 
+1

[Regardez ici pour] (https://www.postgresql.org/ docs/current/static/functions-json.html) * Concaténer deux valeurs jsonb en une nouvelle valeur jsonb. * – klin

Répondre

0

L'opérateur de concaténation || à ajouter un élément à un tableau:

UPDATE justjson 
SET doc = doc || '{"age": "45", "name": "xyz"}'::jsonb 
WHERE is = 1; 
+0

pour l'amour de toutes les choses sacrées, mettre dans une explication - vous devez savoir par savoir que cela a été signalé et il est frapper la file d'attente de faible qual. : D de la [file d'attente de révision] (https://stackoverflow.com/review/low-quality-posts/17579127) –

+1

Nous vous remercions de cet extrait de code, qui peut vous fournir une aide limitée et immédiate. Une explication appropriée [améliorerait considérablement] (// meta.stackexchange.com/q/114762) sa valeur à long terme en montrant * pourquoi * ceci est une bonne solution au problème, et le rendrait plus utile aux futurs lecteurs avec d'autres questions similaires. S'il vous plaît [modifier] votre réponse pour ajouter quelques explications, y compris les hypothèses que vous avez faites. –

+0

@YvetteColomb Un tel appel ardent ne peut pas rester inaudible. –