postgresql 我可以在过滤器中使用jsonpath predicate 吗?

a64a0gku  于 2023-05-17  发布在  PostgreSQL
关注(0)|答案(1)|浏览(82)

我有一个带有JSONField的模型,需要只选择在jsonb中有特定值嵌套的对象。
从Django文档中,我知道你可以使用contains,但是Postgres @>操作符不会递归到结构中。我想用@? '$.** ? (@.mykey == "myValue")'来过滤。myKeymyValue在我的代码中是文字,它们不是用户输入。

0lvr5msh

0lvr5msh1#

你总是可以写原始的SQL。

raw_queryset = MyModel.objects.raw("""
    SELECT * FROM myapp_mymodel
    WHERE jsonfield_name @? '$.** ? (@.mykey == "myValue")'
""")

但是有一堆caveats可以使用这些。

相关问题