【发布时间】:2015-08-25 13:44:12
【问题描述】:
我有一个 Play 2.3.x Java 应用程序通过 Morphia 连接到 MongoDB 数据库。
我在 MongoDB 中激活了慢查询分析,发现查询经常出现。它看起来像这样:
"query": {
"field1": null,
"field2": true,
"field3": "a061ee3f-c2be-477c-ad81-32f852b706b5",
"$or": [
{
"field4.VAL.VALUE_1": "EXPECTED_VALUE_1",
"field4.VAL.VALUE_2": "EXPECTED_VALUE_2"
}
]
}
在当前状态下,没有索引,因此每次执行查询时都会扫描整个集合。我还有一些文档,但我预计数据库会增长。
所以我想知道最好的解决方案是什么:
- 从查询中删除以上所有子句,检索所有结果
(分页)并使用 Java
Stream API过滤 - 保持查询不变并索引字段
如果您看到其他解决方案,请随时提出建议 :)
谢谢。
【问题讨论】:
-
$or数组中有一个对象——这有什么意义? -
你标记了一个点!因为在另一种情况下,我有几个对象。但是当我只有一个时我必须处理这种情况以避免这种无用的
$or
标签: java performance mongodb java-stream morphia