我声明了以下数据模型:
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”?
谢谢!
答案 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"