(lo so ho solo chiesto un'altra domanda su questo, ma le risposte mi portano a questa domanda, ho pensato che sarebbe stato opportuno creare un altro)interrogazione Java e MongoDB per problemi isodate
Ho un oggetto in MongoDB che assomiglia a questo:
{
"id" : NumberLong(12345),
"dateModified" : ISODate("2015-01-21T19:43:17.440Z")
}
la query ho bisogno di creare per recuperare questo dovrebbe apparire come questo (la data nel oggetto cade tra queste due date):
db.history.find({"dateModified" : { "$gte" : ISODate("2015-01-19T00:00:00.000Z") , "$lte" : ISODate("2015-01-25T00:00:00.000Z")}});
Sfortunatamente, sto usando Java e le cose stanno venendo fuori divertenti. Ecco la mia domanda Java:
java.util.Date fromDate;
java.util.Date toDate;
BasicDBObject searchQuery = new BasicDBObject();
searchQuery.put("dateModified", BasicDBObjectBuilder.start("$gte", fromDate).add("$lte", toDate).get());
Praticamente ovunque io vada su internet suggerisce che io uso il sopra codice Java per eseguire questa query, ma l'output di testo per questa query è:
{"dateModified" : { "$gte" : { "$date" : "2015-01-19T00:00:00.000Z"} , "$lte" : { "$date" : "2015-01-25T00:00:00.000Z"}}
Questa query non restituisce risultati perché non sta eseguendo una query nel formato ISODate. EDIT: Ciò che intendo è che se uso la query sopra nella shell mongo non ottengo risultati, ma se uso la prima query che ho postato, ottengo risultati.
La mia domanda è: perché questo non converte automaticamente in ISODate come tutti dicono che dovrebbe? Oppure, cosa posso fare per assicurarmi che questa query venga convertita nel formato ISODate?
utilizza https://github.com/mongodb/morphia è più amichevole. – ulima69
Se funziona, non preoccuparti. https://jira.spring.io/browse/DATAMONGO-671 –