0

我声明了以下数据模型:

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

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

就像是:

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

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

谢谢!

4

1 回答 1

1

这就是 Opa 中所谓的“孔表达式”:[_]. 对于列表类型的数据库值:

list(anything) /my_db/my_list_val

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

在手册的查询/子查询一章(在WIKI中)示例:

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

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

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

myToto = /toto/toto[tata_list[_] == "id1"]
于 2013-07-23T20:40:16.870 回答