Scenario: Considerare Sto avendo una collezione chiamata MyCollection
, con i seguenti dati:Come interrogare l'intervallo di date sulla raccolta MongoDB in cui la data ISO è memorizzata nel campo stringa?
{
"_id" : 'MyUniqueID_01'
"CreatedTime" : "2013-12-01T14:35:00Z",
"LastModifiedTime" : "2013-12-01T13:25:00Z"
}
Ora voglio interrogare il database MongoDB in cui il tipo di cui sopra dei dati è in enorme numero di documenti. E la mia domanda è basata su di date vale a dire utilizzando $gt
, $gte
, $lt
& $lte
Quindi la mia domanda potrebbe essere qualcosa di simile:
db.MyCollection.find({ 'CreatedTime': {$gt: '2013-05-25T09:29:40.572Z'}})
Considerando gli esempi di cui sopra Il risultato atteso è, interrogazione ha per ottenere un documento (dal "CreatedTime": "2013-12-01T14: 35: 00Z" è maggiore del valore passato nella query "2013-05-25T09: 29: 40.572Z"); mentre non lo è, il problema è che il campo CreatedTime
è in formato stringa.
Domanda: C'è un modo per poter ottenere il risultato previsto perfettamente senza modificare il tipo di campo stringa fino ad oggi?
Le stringhe di data e ora ISO 8601 come queste dovrebbero funzionare correttamente per le query dell'intervallo di date. Questo è uno dei vantaggi del formato. La tua query di esempio restituisce il tuo documento di esempio, come previsto. – JohnnyHK
@JohnnyHK: Grazie ... Funziona esattamente sul mio DB locale ma la stessa query non funziona sul server live. Esistono dipendenze di versioni? –
@AmolMKulkarni Per curiosità, hai scoperto perché non ha funzionato sul server? Sto lavorando sull'interrogazione tra fasce orarie e ci siamo imbattuti durante la ricerca. – Raghuveer