De zoekopdracht levert geen resultaten op omdat de $hour
operator wordt alleen toegepast in de aggregatiepijplijn, niet de find()
vraag. Dus in uw aggregatie heeft uw pijplijn twee stappen, de $project
waarmee een nieuw veld wordt gemaakt dat het uurgedeelte en de volgende fase bevat $match
die vervolgens de documenten opvraagt.
Uw uiteindelijke aggregatiebewerking ziet er dus als volgt uit:
var pipeline = [
{
"$project": {
"hour": { "$hour": "$date" },
"date": 1
}
},
{
"$match": {
"hour": { "$gt": 4, "$lt": 8}
}
}
]
db.collection.aggregate(pipeline);