2015-01-27 19 views
5

(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?

+0

utilizza https://github.com/mongodb/morphia è più amichevole. – ulima69

+0

Se funziona, non preoccuparti. https://jira.spring.io/browse/DATAMONGO-671 –

risposta

2

Se si esegue effettivamente questa query da Java, funzionerà. Ma non è necessario incollare l'output di testo nella shell, perché il formato di output di testo del driver Java per i documenti BSON è MongoDB Extended JSON, lo stesso formato utilizzato da strumenti come mongoexport. Tuttavia, questo formato non è compreso dalla shell. C'è un Jira issue che richiede il supporto della shell per JSON esteso.