我在mongodb robo命令中运行以下查询命令:
db.getCollection('t_data').find({"mid":123456,"datetime":{"$gte" : "2016-09-01" , "$lte" : "2016-9-12"}})
,大约需要2秒才能返回10000条记录。 但是,当我将其放入Java中执行时,要花几分钟才能返回数据(10000条记录)。在{{mid:1,datetime:1}}的中部和日期时间都有一个索引。查询的Java代码如下:如下:
......
DBObject query = new BasicDBObject();
DBObject timeObj = new BasicDBObject();
timeObj.put("$gte", "2016-09-01");
timeObj.put("$lte", "2016-09-12");
query.put("mid", 123456);
query.put("datetime", timeObj);
DBObject queryField = new BasicDBObject();
queryField.put("pdid", true);
queryField.put("data", true);
queryField.put("datetime", true);
DBCollection coll = queryService.getCollection('t_data');
DBCursor dbcoursor= coll.find(query,queryField);//only this coding line takes serveral minutes.
while(dbcoursor.hasNext()) {
......
}
......
那么在Java和mongodb命令中运行之间有什么区别,查询条件相同,但是查询性能却大不相同,如何改善Java中的查询性能。