La query non produce alcun risultato perché $hour
l'operatore viene applicato solo nella pipeline di aggregazione, non in find()
interrogazione. Quindi nella tua aggregazione la tua pipeline ha due passaggi, il $project
che crea un nuovo campo che contiene la parte dell'ora e la fase successiva $match
che poi interroga i documenti.
Quindi la tua operazione di aggregazione finale sarà così:
var pipeline = [
{
"$project": {
"hour": { "$hour": "$date" },
"date": 1
}
},
{
"$match": {
"hour": { "$gt": 4, "$lt": 8}
}
}
]
db.collection.aggregate(pipeline);