有几千个这样的对象:
{
"_id" : ObjectId("5ffbfca73fb224209c6d27be"),
"activeStates" : ["logicConnectionLost", ...],
...,
"_class" : "Entity"
}
我需要计算其activeStates数组包含输入数组中至少一个元素的对象的数量
我正在使用 countByActiveStatesIn(Set states);
Mongo 是否将每个数组与每个数组进行比较,直到所有数组结束,或者直到找到第一个匹配项?输入数组可能非常大,这就是对数据库的查询可能需要 1000-1500 毫秒的原因。有什么方法可以计算得更快吗?
您可以使用索引加快速度,但请记住,索引字段将存储在某个地方并占用一些内存。
可以通过注解
@Index或通过 MongoDB在类中进行索引尝试分别使用findAll(Pageble pageble)方法获取记录分页,在页面大小中,请求时指定需要的元素个数(例如100),并通过StreamApi每次迭代检查对象内部的数组