sql >> Database teknologi >  >> NoSQL >> MongoDB

Node.js + Mongoose.js Hvordan får man summen af ​​ordrer, der er placeret på en måned eller en uge?

Hvis du bare vil have de samlede ordrer inden for en tidsperiode, kan du bare bruge en intervalforespørgsel på din dato ved hjælp af $gte og $lt stiloperatører:

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

query.exec(function(err, count) {

Og det vil bare returnere optællingen, hvis dokumenter fundet inden for dette område.

Hvis du vil summere en værdi inde fra dit dokument eller endda faktisk hente noget som "daglige totaler" fra det datointerval, kan du bruge aggregeringsrammen til at gøre dette:

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) {

Det gør ikke kun brug af $sum operator til at tilføje værdierne for vores "orderTotal"-felt, men gør også brug af en datosammenlægning operatør for at gruppere på alle værdier som hver enkelt dag inden for det givne interval.

Hvis det sidste tilfælde er det, du ønsker, kan du bruge forskellige operatorer der til at opdele forskellige datoperioder, som du ønsker at indeholde i dine resultater.




  1. Mongoose:Hvordan får man de seneste 7 dages uploaddatastatistik fra DB?

  2. Mongoose kalder til geoNear med GeoJSON-punkter, da forespørgselsparametre ikke virker

  3. Gensample tidsseriedata ved hjælp af Javascript og Mongodb

  4. Cloudera Operational Database applikationsudviklingskoncepter