Zapytanie nie daje żadnych wyników, ponieważ $hour
operator jest stosowany tylko w potoku agregacji, a nie find()
zapytanie. Tak więc w Twojej agregacji potok składa się z dwóch kroków:$project
które tworzy nowe pole zawierające część godzinową i następny etap $match
który następnie przeszukuje dokumenty.
W ten sposób ostateczna operacja agregacji będzie wyglądać tak:
var pipeline = [
{
"$project": {
"hour": { "$hour": "$date" },
"date": 1
}
},
{
"$match": {
"hour": { "$gt": 4, "$lt": 8}
}
}
]
db.collection.aggregate(pipeline);