sql >> Database >  >> NoSQL >> MongoDB

Node.js + Mongoose.js Hoe krijg ik de som van bestellingen die in een maand of een week zijn geplaatst?

Als u alleen het totale aantal bestellingen binnen een bepaalde periode wilt hebben, kunt u gewoon een bereikquery op uw datum gebruiken met $gte en $lt stijloperatoren:

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

query.exec(function(err, count) {

En dat geeft alleen de telling terug als documenten binnen dat bereik worden gevonden.

Als u een waarde uit uw document wilt optellen, of zelfs iets als "dagtotalen" wilt ophalen binnen dat datumbereik, dan kunt u het aggregatieraamwerk gebruiken om dit te doen:

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

Dat maakt niet alleen gebruik van de $sum operator om de waarden voor ons veld "orderTotal" op te tellen, maar maakt ook gebruik van een datum-aggregatie operator om alle waarden te groeperen als elke dag binnen het opgegeven bereik.

Als dat laatste geval is wat u wilt, kunt u daar verschillende operatoren gebruiken om verschillende datumperioden op te splitsen die u in uw resultaten wilt opnemen.




  1. Bindende dynamische serverreactie (geneste json)

  2. MongoDB PHP Driver en MongoDB compatibiliteitscontrole

  3. gebruik :=geeft ongebruikte fout maar gebruik =niet in Go

  4. Hoe wijzig je de gebruikersrechten van MongoDB?