Mongodb 在intmap集合中搜索特定属性(不使用映射索引)

Mongodb 在intmap集合中搜索特定属性(不使用映射索引),mongodb,opa,Mongodb,Opa,我的问题是(再次)关于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

我的问题是(再次)关于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的某些功能,或者我是否需要在click集合上执行数据迁移,因为我无法检索未存储在其他任何位置的intmap索引值

我希望我的问题足够清楚。
感谢您的回复。

在这种情况下,我通常会建立另一个索引,例如

db /click/by_qr : intmap(Scan.scan)


当然,这意味着您必须小心维护索引。我的理解是,最终会有一个更好的方法来处理这个问题,但现在你必须手动操作;我同意这不是一个很好的解决方案。

我无法处理intmap()集合。我将不得不迁移到数据库集集合。无论如何,感谢您的回答:我确实需要操作数据迁移;)
db /click/by_qr : intmap(int) // int represents user id