sql >> Base de Datos >  >> RDS >> Mysql

Mongodb:Consulta basada en tiempo en formato ISODate. ¿Qué hay de malo en mi consulta?

La consulta no arroja ningún resultado porque el $hour el operador solo se aplica en la canalización de agregación, no en find() consulta. Entonces, en su agregación, su canalización tiene dos pasos, el $project que crea un nuevo campo que contiene la parte de la hora y la siguiente etapa $match que luego consulta los documentos.

Por lo tanto, su operación de agregación final será así:

var pipeline = [
    {
        "$project": {
            "hour": { "$hour": "$date" },
            "date": 1
        }
    },
    {
        "$match": {
            "hour": { "$gt": 4,  "$lt": 8}
        }
    }
]

db.collection.aggregate(pipeline);