查询模型的List属性中的元素的数据库

时间:2013-07-23 14:25:21

标签: opa

我声明了以下数据模型:

toto = { name : "toto1" tata_list : ["id1", "id2", "id3", ...] }

使用OPA数据库查询语法,我可以在“tata_list”属性中检索包含特定“id”的“toto”模型吗?

类似的东西:

myToto = /toto/toto[tata_list contains "id1"]

或者,如果tata_list属性包含我的ID,我是否必须浏览所有“toto”并搜索每个“toto”?

谢谢!

1 个答案:

答案 0 :(得分:1)

这在Opa中被称为“洞穴表达”:[_]。对于列表类型的数据库值:

list(anything) /my_db/my_list_val

查询中的路径my_list_val[_]引用列表中的任何元素。

在手册的第Querying / Sub-queries章中(在WIKI中)示例:

dbset(_, _) x = /dbname/complex[smap["key"].lst[_] == "value"]

根据名为list(string)的{​​{1}}值查找文档。如果list(实际上,带有字符串映射的记录,其中key为lst且value是嵌套记录,字段为"key"),则包含字符串lst,则它满足搜索条件。

在您的情况下,查询可以是:

"value"