Я запускаю следующую команду запроса в команде mongodb robo:
db.getCollection('t_data').find({"mid":123456,"datetime":{"$gte" : "2016-09-01" , "$lte" : "2016-9-12"}})
и для возврата 10000 записей требуется около 2 секунд.
однако, когда я помещаю его в Java для выполнения, требуется несколько минут для возврата данных (10000 записей). Есть индекс mid и datetime с {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.