I have the following json that I am storing in a jsonb field. For every record representing a product, it contains various categories and in each category a is priority level.
[
{
"priority": 0,
"description": "",
"categoryName": "Cars",
"title": ""
},
{
"priority": 1,
"description": "",
"categoryName": "Trucks",
"title": ""
},
{
"priority": 2,
"description": "",
"categoryName": "Vans",
"title": ""
}
]
I would like to order the data by various categories dynamically using the priority field such that, if I am displaying all the products in the category Cars, I will order by the 0 array element, if I am displaying all the products in the category Vans, I order by the 2 array element.
Currently, to order by the first array element I am able to do so:
ORDER BY OBJECT_DATA->'productCategories'->0->>'priority'
However, I would like to order by first selecting the the array value (categoryName) and then using the array value to select its priority.
As an example: order by Trucks->priority (1)
I am using PostgresSQL 9.6.