Django JSONB PostgreSQL类型:如何查找
我不知道我们可以在多大程度上使用PostgreSQL 9.4的JSONB类型 例如,如果我将以下内容存储在JSON字段中: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 |
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的自定义查找。