Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Mongodb :Consulta baseada em hora no formato ISODate. O que há de errado na minha consulta?


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);