Mysql
 sql >> Database >  >> RDS >> Mysql

Mongodb :query basata sull'ora in formato ISODate. Cosa c'è che non va nella mia domanda?

La query non produce alcun risultato perché $hour l'operatore viene applicato solo nella pipeline di aggregazione, non in find() interrogazione. Quindi nella tua aggregazione la tua pipeline ha due passaggi, il $project che crea un nuovo campo che contiene la parte dell'ora e la fase successiva $match che poi interroga i documenti.

Quindi la tua operazione di aggregazione finale sarà così:

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

db.collection.aggregate(pipeline);