ho un datastore MongoDB impostato con i dati sulla posizione memorizzati in questo modo:MongoDB - Interrogazione tra un intervallo di tempo di ore
{
"_id" : ObjectId("51d3e161ce87bb000792dc8d"),
"datetime_recorded" : ISODate("2013-07-03T05:35:13Z"),
"loc" : {
"coordinates" : [
0.297716,
18.050614
],
"type" : "Point"
},
"vid" : "11111-22222-33333-44444"
}
Mi piacerebbe essere in grado di eseguire una query simile all'esempio date range ma invece su un intervallo di tempo . Ad esempio, recuperare tutti i punti registrati tra le 12:00 e le 16:00 (può essere eseguito anche con 1200 e 1600 ore di 24 ore).
ad es.
Con punti:
"datetime_recorded" : ISODate("2013-05-01T12:35:13Z"),
"datetime_recorded" : ISODate("2013-06-20T05:35:13Z"),
"datetime_recorded" : ISODate("2013-01-17T07:35:13Z"),
"datetime_recorded" : ISODate("2013-04-03T15:35:13Z"),
una query
db.points.find({'datetime_recorded': {
$gte: Date(1200 hours),
$lt: Date(1600 hours)}
});
fornirebbe solo il primo e l'ultimo punto.
È possibile? O dovrei farlo per ogni giorno?
Poiché Mongodb non dispone di operatori data/ora per le query normali, consiglierei di cambiare lo schema in modo da includere l'ora come campo distinto. Senza di esso, non sarai in grado di utilizzare un indice in modo efficiente per restringere i risultati. – WiredPrairie