Die Abfrage liefert keine Ergebnisse, weil der $hour
-Operator wird nur in der Aggregationspipeline angewendet, nicht in find()
Anfrage. In Ihrer Aggregation hat Ihre Pipeline also zwei Schritte, den $project
Dadurch wird ein neues Feld erstellt, das den Stundenteil und die nächste Stufe enthält $match
die dann die Dokumente abfragt.
Somit sieht Ihre endgültige Aggregationsoperation folgendermaßen aus:
var pipeline = [
{
"$project": {
"hour": { "$hour": "$date" },
"date": 1
}
},
{
"$match": {
"hour": { "$gt": 4, "$lt": 8}
}
}
]
db.collection.aggregate(pipeline);