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.