(ich weiß, dass ich nur noch eine Frage danach gefragt, aber die Antworten führen mir diese Frage zu stellen, dachte ich, es wäre angebracht andere zu schaffen)Java & MongoDB-Abfrage für isodate Probleme
Ich habe ein Objekt in MongoDB, die wie folgt aussieht:
{
"id" : NumberLong(12345),
"dateModified" : ISODate("2015-01-21T19:43:17.440Z")
}
die Abfrage muss ich schaffen diese abzurufen wie folgt (das Datum in das Objekt fällt zwischen diesen beiden Terminen) aussehen sollte:
db.history.find({"dateModified" : { "$gte" : ISODate("2015-01-19T00:00:00.000Z") , "$lte" : ISODate("2015-01-25T00:00:00.000Z")}});
Leider benutze ich Java und die Dinge kommen komisch raus. Hier ist meine Java-Abfrage:
java.util.Date fromDate;
java.util.Date toDate;
BasicDBObject searchQuery = new BasicDBObject();
searchQuery.put("dateModified", BasicDBObjectBuilder.start("$gte", fromDate).add("$lte", toDate).get());
So ziemlich überall, wo ich im Internet gehen läßt vermuten, dass ich die obigen Java-Code verwenden, um diese Abfrage auszuführen, aber die Textausgabe für diese Abfrage ist:
{"dateModified" : { "$gte" : { "$date" : "2015-01-19T00:00:00.000Z"} , "$lte" : { "$date" : "2015-01-25T00:00:00.000Z"}}
Diese Abfrage gibt keine Ergebnisse zurück, da sie nicht im ISODate-Format abfragt. EDIT: Was ich hier meine, ist, dass, wenn ich die obige Abfrage in der Mongo-Shell verwende ich keine Ergebnisse, aber wenn ich die erste Abfrage verwende, die ich gepostet habe, bekomme ich Ergebnisse.
Meine Frage ist, warum konvertiert dies nicht automatisch zu ISODate wie jeder sagt es sollte? Oder: Was kann ich tun, um sicherzustellen, dass diese Abfrage in das ISODate-Format konvertiert wird?
Verwenden Sie https://github.com/mongodb/morphia, es ist freundlicher. – ulima69
Wenn es funktioniert, mach dir keine Sorgen. https://jira.spring.io/browse/DATAMONGO-671 –