从Postgres NOSQL/json数据中搜索和选择
有人能帮我搜索Postgres数据库的json数据类型吗 我有一个表say从Postgres NOSQL/json数据中搜索和选择,json,postgresql,Json,Postgresql,有人能帮我搜索Postgres数据库的json数据类型吗 我有一个表saytransactions,包含以下类似数组的值: 列:“数据”数据类型:json 单个演示事务: { "id": "tran_54645bcb98ba7acfe204", "amount": 4200, ... "fees": [ { "type": "application", "application": "app_1d70
transactions
,包含以下类似数组的值:
列:“数据”数据类型:json
单个演示事务:
{
"id": "tran_54645bcb98ba7acfe204",
"amount": 4200,
...
"fees": [
{
"type": "application",
"application": "app_1d70acbf80c8c35ce83680715c06be0d15c06be0d",
"payment": "pay_917018675b21ca03c4fb",
"amount": 420,
"currency": "EUR",
"billed_at": null
}
]
}
嵌套事务列表:
[
{
"id": "tran_54645bcb98ba7acfe204",
"amount": 4200,
"fees": [
{
"type": "application",
"application": "app_1d70acbf80c8c35ce83680715c06be0d15c06be0d",
"payment": "pay_917018675b21ca03c4fb",
"amount": 420,
"currency": "EUR",
"billed_at": null
}
]
},
{
"id": "tran_98645bcb98ba7acfe204",
"amount": 4200,
"fees": [
{
"type": "application",
"application": "app_1d70acbf80c8c35ce83680715c06be0d15c06be0d",
"payment": "pay_917018675b21ca03c4fb",
"amount": 120,
"currency": "AUD",
"billed_at": null
}
]
}
]
如果我想获得所有交易的amount>300
和currency=EUR
我如何才能获得它们?
我是Postgres新手,因此需要帮助了解Postgres nosql的查询构建,特别是对于嵌套JSON数组中的单个元素,使用PHP进行查询构建:
SELECT *
FROM transactions
WHERE (data #>> '{fees,0,amount}')::numeric > '300'
AND (data #>> '{fees,0,currency}') = 'EUR';
对于包含更多元素的阵列,您需要做更多的工作。这本手册是关于 由于您使用的是Postgres 9.4:With
jsonb
,因此会有更好的选项,特别是对于多个数组元素:
SELECT sum((data #>> '{fees,0,amount}')::numeric) AS sum_amount
FROM ...
博士后版本?表格定义?此外,也没有“postgre”这样的东西。请修改。我有9.4版本,您可以考虑表定义如下:<代码>表名:事务栏:数据< /代码>,所以您使用的是<代码> JSON<代码>,而不是<代码> JSONB?在您的示例中,嵌套JSON数组中只有一个项。情况总是这样吗?不,不会总是这样。它将是一个大数据和多个阵列。这只是一个演示交易,我已经展示了没有更多的问题,我可以根据上述查询获得所有金额>300的合计金额(金额)吗