I ont le tableau suivant:Interrogation Postgres 9,6 tableau JSONB d'objets
CREATE TABLE trip
(
id SERIAL PRIMARY KEY ,
gps_data_json jsonb NOT NULL
);
Le JSON en gps_data_json contient un tableau d'objets de déclenchement avec les champs suivants (données-échantillon ci-dessous):
- Mode
- horodatage
- latitude
- longitude
J'essaie d'obtenir toutes les lignes qui contiennent un certain "mode".
SELECT * FROM trip
where gps_data_json ->> 'mode' = 'WALK';
Je suis assez sûr que je l'aide de la - >> opérateur mal, mais je ne suis pas sûr de dire qui la requête que le champ JSONB est un tableau d'objets?
données Exemple:
INSERT INTO trip (gps_data_json) VALUES
('[
{
"latitude": 47.063480377197266,
"timestamp": 1503056880725,
"mode": "TRAIN",
"longitude": 15.450349807739258
},
{
"latitude": 47.06362533569336,
"timestamp": 1503056882725,
"mode": "WALK",
"longitude": 15.450264930725098
}
]');
INSERT INTO trip (gps_data_json) VALUES
('[
{
"latitude": 47.063480377197266,
"timestamp": 1503056880725,
"mode": "BUS",
"longitude": 15.450349807739258
},
{
"latitude": 47.06362533569336,
"timestamp": 1503056882725,
"mode": "WALK",
"longitude": 15.450264930725098
}
]');
Vous pouvez utiliser [jsonb_array_elements] (https://www.postgresql.org/docs/current/static/functions- json.html) et évitez le cast. –
Oui j'ai juste raté, corrigé, merci – jlandercy