A consulta não está gerando nenhum resultado porque o
$hour
O operador é aplicado apenas no pipeline de agregação, não no find()
consulta. Portanto, em sua agregação, seu pipeline tem duas etapas, o $project
que cria um novo campo que contém a parte da hora e o próximo estágio $match
que então consulta os documentos. Assim, sua operação final de agregação será assim:
var pipeline = [
{
"$project": {
"hour": { "$hour": "$date" },
"date": 1
}
},
{
"$match": {
"hour": { "$gt": 4, "$lt": 8}
}
}
]
db.collection.aggregate(pipeline);