Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Mongodb :Abfrage basierend auf Zeit im ISODate-Format. Was ist falsch an meiner Abfrage?

Die Abfrage liefert keine Ergebnisse, weil der $hour -Operator wird nur in der Aggregationspipeline angewendet, nicht in find() Anfrage. In Ihrer Aggregation hat Ihre Pipeline also zwei Schritte, den $project Dadurch wird ein neues Feld erstellt, das den Stundenteil und die nächste Stufe enthält $match die dann die Dokumente abfragt.

Somit sieht Ihre endgültige Aggregationsoperation folgendermaßen aus:

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

db.collection.aggregate(pipeline);