我的问题是(再次)关于OPA数据库高级API。
我声明了以下数据模型:
database click = @mongo
db /click/click : intmap(Scan.scan)
这是Scan.scan类型:
type Scan.scan = {
user : int
qr : int
date : Date.date
}
我的问题是我需要在数据库中查询给定“qr”属性的具体“点击”,但是使用intmap这一事实迫使我检索所有点击,然后手动搜索整个列表与给定的“qr”参数匹配。
我实际上在做的是通过/click/click
获取所有点击,然后在其上应用List.filter ....但我遇到了性能问题(我感觉我正在做MongoDB的工作)
所以我的问题很简单: 我是否遗漏了OPA数据库高级API的内容,或者我是否需要在我的点击集合上进行数据迁移,因为我无法检索未存储在其他任何地方的intmap索引值。
我希望我的问题足够明确。 谢谢你的回复。
答案 0 :(得分:1)
在这种情况下我通常做的是构建另一个索引,例如
db /click/by_qr : intmap(Scan.scan)
或
db /click/by_qr : intmap(int) // int represents user id
当然,这意味着您必须小心维护索引。我的理解是最终会有更好的方法来解决这个问题,但现在你必须手动完成;我同意这不是一个非常好的解决方案。