MongoDB:如何优化此查询?

时间:2017-05-04 14:32:11

标签: java mongodb optimization

我想在MongoDB中运行一个查询,该查询返回一个集合的不同documnets,其中包含至少一个字符串数组元素。例如,如果我有一个包含A,B,C的列表,则查询应返回包含“A”或“B”或“C”的所有不同文档。我写了这个查询:

BasicDBList orList = new BasicDBList();
orList.add(new BasicDBObject("A", new BasicDBObject("$exists", true)));
orList.add(new BasicDBObject("B", new BasicDBObject("$exists", true)));
orList.add(new BasicDBObject("C", new BasicDBObject("$exists", true)));

BasicDBObject or = new BasicDBObject("$or", orList);

DBCursor cursor = coll.find(query);
        while (cursor.hasNext()) {
            DBObject obj = cursor.next();
            map.put(Integer.parseInt(obj.get("id").toString()),obj.toMap());
        }

在while循环中,所有提取的文档将被复制到地图中以供进一步处理。 但是此查询非常耗时且无法扩展。我该如何优化呢?

我的文件结构是

的形式
{_id:objectid,
 "id":intValue, 
"keyword1":FloatValue,
"keyword2":FloatValue,
"keyword3":FloatValue,
...
}

提前致谢。

0 个答案:

没有答案
相关问题