Mysql
 sql >> Base de données >  >> RDS >> Mysql

Mongodb :Requête basée sur l'heure au format ISODate. Qu'est-ce qui ne va pas dans ma requête ?

La requête ne donne aucun résultat car le $hour l'opérateur n'est appliqué que dans le pipeline d'agrégation, pas le find() requête. Ainsi, dans votre agrégation, votre pipeline comporte deux étapes, la $project qui crée un nouveau champ contenant la partie heure et l'étape suivante $match qui interroge ensuite les documents.

Ainsi, votre opération d'agrégation finale ressemblera à ceci :

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

db.collection.aggregate(pipeline);