Заявката не дава никакви резултати, защото $hour
се прилага само в тръбопровода за агрегиране, а не find()
заявка. Така че във вашето агрегиране вашият конвейер има две стъпки, $project
което създава ново поле, което съдържа часовата част и следващия етап $match
който след това прави запитвания към документите.
По този начин крайната ви операция за агрегиране ще бъде така:
var pipeline = [
{
"$project": {
"hour": { "$hour": "$date" },
"date": 1
}
},
{
"$match": {
"hour": { "$gt": 4, "$lt": 8}
}
}
]
db.collection.aggregate(pipeline);