Je cette JSON sur ma base de données:PostgreSQL - idées de requête NoSQL pour sélectionner un nœud de JSON
{
"Id": 1,
"Questions": [
{
"QuestionId": 6,
"Description": "Question 1",
"Alternatives": [
{
"Index": 1,
"CorrectAnswer": false,
"AlternativeId": 26,
"QuestionId": 6,
"Description": "Alternative one",
"Selected": false
},
{
"Index": 2,
"CorrectAnswer": true,
"AlternativeId": 27,
"QuestionId": 6,
"Description": "Alternative two",
"Selected": false
}
]
},
{
"QuestionId": 7,
"Description": "Question 2",
"Alternatives": [
{
"Index": 1,
"CorrectAnswer": false,
"AlternativeId": 26,
"QuestionId": 6,
"Description": "Alternative one",
"Selected": false
},
{
"Index": 2,
"CorrectAnswer": true,
"AlternativeId": 27,
"QuestionId": 6,
"Description": "Alternative two",
"Selected": false
}
]
}
]
}
Je ne peux pas juste une question dans ce document. J'ai essayé les questions suivantes:
select data#>'{Questions}' from db.my_table
where (data #> '{Questions,0,QuestionId}')::numeric = 6;
SELECT data ->> 'Questions' AS Questions FROM db.my_table
WHERE (data -> 'Questions' ->> 'QuestionId')::numeric = 6;
SELECT data ->> 'Questions' AS Questions FROM db.my_table
WHERE data -> 'Questions' ->> 'QuestionId' = '6'
Que puis-je faire mal? Je reçois toujours le retour de 0 lignes affectées.
Documentation:
https://www.postgresql.org/docs/current/static/datatype-json.html https://www.postgresql.org/docs/current/static/functions-json.html
Chaque aide est la bienvenue!
Hey @jmelesky merci pour cette réponse! Mais j'ai l'erreur suivante: 'ERREUR: la fonction json_array_elements (jsonb) n'existe pas LINE 1: sélectionnez json_array_elements (data -> 'Questions') de db.m ... ^ ASTUCE: Aucune fonction ne correspond à la donnée types de nom et d'argument. Vous devrez peut-être ajouter des conversions de types explicites. ********** Erreur ********** 'lorsque je cours la dernière requête (cartésienne). Ma colonne est un jsonb ... – IgoR
Si votre colonne est jsonb, pas json, alors vous devriez utiliser la fonction jsonb au lieu de la fonction json. Comme le montre [documentation] (https://www.postgresql.org/docs/current/static/functions-json.html#FUNCTIONS-JSON-PROCESSING-TABLE), cela signifie simplement utiliser 'jsonb_array_elements', au lieu de' json_array_elements '. À l'avenir, fournir plus d'informations sur votre schéma dans votre question vous aidera. – jmelesky
! Merci beaucoup, ça marche maintenant ... Je vais mettre quelques informations sur mon schéma afin que vous puissiez voir une "meilleure solution" possible. :) – IgoR