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.