我声明了以下数据模型:
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 = { name : "toto1" tata_list : ["id1", "id2", "id3", ...] }
使用 OPA 数据库查询语法,我可以检索在其“tata_list”属性中包含特定“id”的“toto”模型吗?
就像是:
myToto = /toto/toto[tata_list contains "id1"]
或者,如果 tata_list 属性包含我的 ID,我是否必须浏览所有“toto”并搜索它们中的每一个?
谢谢!
这就是 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"]