Django JSONB PostgreSQL类型:如何查找

Django JSONB PostgreSQL类型:如何查找,django,jsonb,postgresql-9.4,Django,Jsonb,Postgresql 9.4,我不知道我们可以在多大程度上使用PostgreSQL 9.4的JSONB类型 例如,如果我将以下内容存储在JSON字段中: id | data ----+-------------------------------------- 1 | {"a": ["1", "2"]} 2 | {"b": ["1", "5"]} 3 | {"a": ["1", "3", "8"], "c": ["1", "2"]} 4 |

我不知道我们可以在多大程度上使用PostgreSQL 9.4的JSONB类型

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

 id |                 data                 
----+--------------------------------------
  1 | {"a": ["1", "2"]}
  2 | {"b": ["1", "5"]}
  3 | {"a": ["1", "3", "8"], "c": ["1", "2"]}
  4 | {"a": ["7", "8"]}
如何选择JSONB字段列表中有值为“1”的键“a”的行

对于本例,结果将是:

 id |                 data                 
----+--------------------------------------
  1 | {"a": ["1", "2"]}
  3 | {"a": ["1", "3", "8"], "c": ["1", "2"]}
(2 rows)
如果是,如何与django一起使用


谢谢

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


另一种选择是等待此功能在Django中实现。对此有一个kickstarter项目,请参见解决您问题的查询是:

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

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

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

您可以查看

Ok for Django,但不必讨论Django,有没有一种方法可以查询我在纯SQL中寻找的内容?查看,我不确定查找具有列表字典的特定值是否容易。是的,使用包含运算符,即data@>{“a”:[“1”]}。将其编写为Django查找应该很容易,数据_uu包含={“a”:[“1”]},其中contains是生成@>SQL的自定义查找。