Wie Abfrage für alle Datenbankeinträge innerhalb von zwei Zeitstempeln in Java MongoDB 3.0?Java MongoDB 3.0+ Abfrage zwischen Zeitstempeln
Derzeit verwende ich diese Java-Methode, aber es ist nicht gut, eine Reihe von Dokumenten innerhalb der Start- und Endzeitstempel Kriterien zurückzugeben. Der Code ist ein wenig kaputt, weil er nur den letzten Eintrag zurückgibt, wenn er in den Zeitstempel fällt.
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;
}
Ich möchte eine Reihe von Datenbankeinträgen innerhalb der zwei Zeitstempel erhalten. Wie machst du das einfach in Java MongoDB 3.0?
' Document latestEntry = newColl.find(). Iterator(). Next(); 'Dieser Code gibt nur das erste Dokument zurück. Sie möchten über alle Dokumente iterieren. Idealerweise nicht * alle * Dokumente in der Sammlung, sondern nur diejenigen, die mit dem Zeitstempel übereinstimmen (einen Filter für die 'find' Methode bereitstellen). – Thilo
sollten Sie den Zeitstempel in der Abfrage mit den Operatoren $ gt und $ lt filtern. Es wird einfacher und viel schneller ... siehe http://stackoverflow.com/questions/2943222/find-objects-between-two-dates-mongodb – felix