我想在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,
...
}
提前致谢。