JSONB PostgreSQL类型:如何查找

时间:2015-02-02 02:25:34

标签: django jsonb postgresql-9.4

我不确定我们能在多大程度上使用JSONB类型的PostgreSQL 9.4

例如,如果我将以下内容存储在JSON字段中:

 id |                 data                 
----+--------------------------------------
  1 | {"a": ["1", "2"]}
  2 | {"b": ["1", "5"]}
  3 | {"a": ["1", "3", "8"], "c": ["1", "2"]}
  4 | {"a": ["7", "8"]}

如何选择JSONB字段中有一个键的行" a"具有价值" 1"在其名单中?

对于此示例,结果将是:

 id |                 data                 
----+--------------------------------------
  1 | {"a": ["1", "2"]}
  3 | {"a": ["1", "3", "8"], "c": ["1", "2"]}
(2 rows)

如果是,如何与django一起使用?

由于

3 个答案:

答案 0 :(得分:0)

最好的办法是使用Django 1.7或更高版本编写自定义查找和转换。您需要编写几个生成所需SQL的类。

另一个选择是等待此功能登陆Django。有一个kickstarter项目,请参阅https://www.kickstarter.com/projects/mjtamlyn/improved-postgresql-support-in-django

答案 1 :(得分:0)

解决问题的查询是:

select *
from mytable
where data -> 'a' ? '1'

答案 2 :(得分:0)

您可以使用以下查询获取它:

yourModel.objects.filter(data__contains={"a": [*]})

您可以查看this