3

我不确定我们可以在多大程度上使用 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 字段具有键“a”且其列表中值为“1”的行?

对于此示例,结果将是:

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

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

谢谢

4

3 回答 3

0

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

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

于 2015-02-02T15:00:33.900 回答
0

解决您的问题的查询是:

select *
from mytable
where data -> 'a' ? '1'
于 2015-06-16T06:11:32.560 回答
0

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

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

你可以看看这个

于 2016-04-22T06:52:59.207 回答