sql >> Databasteknik >  >> NoSQL >> MongoDB

Node.js + Mongoose.js Hur får man summan av beställningar som görs inom en månad eller vecka?

Om du bara vill ha de totala beställningarna inom en tidsperiod kan du bara använda en intervallfråga på ditt datum med $gte och $lt stiloperatorer:

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

query.exec(function(err, count) {

Och det returnerar bara antalet om dokument hittas inom det intervallet.

Om du vill summera ett värde inifrån ditt dokument, eller till och med verkligen hämta något som "dagliga totaler" från det datumintervallet kan du använda aggregeringsramverket för att göra detta:

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 använder inte bara $sum operatorn för att lägga ihop värdena för vårt "orderTotal"-fält, men använder också en datumsammanställning operatör för att gruppera alla värden för varje enskild dag inom det givna intervallet.

Om det sista fallet är vad du vill kan du använda olika operatorer där för att dela upp olika datumperioder som du vill ha i dina resultat.




  1. $geoNear matchar närmaste array

  2. Pymongo, fråga i listfältet och/eller

  3. JasperFillManager.fillReport och mongo?

  4. Hur tolkar man lastErrorObject-egenskaperna som returneras från MongoDB?