【发布时间】:2019-02-27 20:39:54
【问题描述】:
我使用的是 Django 2.1,并且我有带有 JSONField(record) 的模型:
{
'fields': [
{'tag': 'x','value': '12345'},
{'tag': 'y','value': '67890'}
]
}
要查询我使用的确切“值”:
Data.objects.filter(record__fields__contains=[{'tag':'x', 'value': '12345'}])
我的问题是,如何将正则表达式与“值”一起使用?例如
Data.objects.filter(record__fields__contains=[{'tag':'x', 'value': '/^123.*/'}])
【问题讨论】:
-
这不会总是有效,因为 JSON 键的顺序(从概念上讲)是免费的,因此 JSON 可能看起来像
{"value": '1234', "tag": 'x'}。据我所知,只有 PostgreSQL(和 MongoDb)有工具来查看查询中的键/值。 -
我忘了提到我使用 PostgreSQL:
from django.contrib.postgres.fields import JSONField我知道在 Mongo 中可以使用原始查询:{ <field>: { $regex: 'pattern', $options: '<options>' } }