0
如何查詢Java MongoDB 3.0中兩個時間戳內的所有數據庫條目?Java MongoDB 3.0+時間戳查詢
目前,我正在使用這種java方法,但它在開始和結束時間戳條件中返回一組文檔方面做得並不好。該代碼有點破,因爲它只在時間戳內返回最新條目。
public static Reading getReadingsBetween(String type,Timestamp startTime,Timestamp endTime) {
MongoClient mongo = new MongoClient("localhost", 27017);
MongoDatabase db = mongo.getDatabase("SampleDB");
MongoCollection<Document> newColl;
Gson gson = new Gson();
newColl = db.getCollection("SampleCollection");
Document latestEntry = newColl.find().iterator().next();
String json = latestEntry.toJson();
Reading reading = gson.fromJson(json, Reading.class);
String thisTimestamp = reading.getGw_timestamp();
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date parsedTimestamp = null;
try {
parsedTimestamp = df.parse(thisTimestamp);
} catch (ParseException e) {
return null;
}
Timestamp gwTimestamp = new Timestamp(parsedTimestamp.getTime());
mongo.close();
if (gwTimestamp.after(startTime) && gwTimestamp.before(endTime)) {
return reading;
}
return null;
}
我想要的是在兩個時間戳內獲取一組數據庫條目。你如何簡單地在Java MongoDB 3.0中做到這一點?
' document latestEntry = newColl.find()。iterator()。next();'這段代碼剛剛返回第一個文檔。您想遍歷所有文檔。理想情況下,不是集合中的所有*文檔,但只有那些匹配時間戳的文檔(爲'find'方法提供過濾器)。 – Thilo
您應該使用$ gt和$ lt操作符在查詢中的時間戳上過濾。它會更容易,更快捷...請參閱http://stackoverflow.com/questions/2943222/find-objects-between-two-dates-mongodb – felix