MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Node.js + Mongoose.js Wie erhalte ich die Summe der Bestellungen, die in einem Monat oder einer Woche aufgegeben werden?

Wenn Sie nur die Gesamtbestellungen innerhalb eines Zeitraums möchten, können Sie einfach eine Bereichsabfrage für Ihr Datum mit $gte und $lt Stiloperatoren:

var query = Model.find({ 
    "createdDate": { 
        "$gte": new Date("2014-05-21"), "$lte": new Date("2014-05-29")
    }
}).count()

query.exec(function(err, count) {

Und das gibt nur die Anzahl zurück, wenn Dokumente in diesem Bereich gefunden werden.

Wenn Sie einen Wert aus Ihrem Dokument summieren oder sogar so etwas wie "Tagessummen" aus diesem Datumsbereich abrufen möchten, können Sie dazu das Aggregations-Framework verwenden:

Model.aggregate([
    { "$match": {
        "$gte": new Date("2014-05-21"), "$lte": new Date("2014-05-29")
    }},
    { "$group": {
        "_id": { "$dayOfYear": "$createdDate" }
        "totalValue": { "$sum": "$orderTotal" }
    }}
],
function(err, result) {

Dabei wird nicht nur der $sum -Operator zum Addieren der Werte für unser "orderTotal"-Feld, verwendet aber auch ein Datumsaggregation Operator, um alle Werte als jeden einzelnen Tag innerhalb des angegebenen Bereichs zu gruppieren.

Wenn Sie diesen letzten Fall möchten, können Sie dort verschiedene Operatoren verwenden, um verschiedene Datumsperioden aufzuteilen, die Sie in Ihren Ergebnissen enthalten möchten.