Si vous voulez juste le total des commandes dans une période de temps, vous pouvez simplement utiliser une requête de plage sur votre date en utilisant $gte
et $lt
opérateurs de style :
var query = Model.find({
"createdDate": {
"$gte": new Date("2014-05-21"), "$lte": new Date("2014-05-29")
}
}).count()
query.exec(function(err, count) {
Et cela renverra simplement le nombre si les documents trouvés dans cette plage.
Si vous souhaitez additionner une valeur à l'intérieur de votre document, ou même récupérer quelque chose comme des "totaux quotidiens" à partir de cette plage de dates, vous pouvez utiliser le cadre d'agrégation pour le faire :
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) {
Cela utilise non seulement le $sum
pour additionner les valeurs de notre champ "orderTotal", mais utilise également un agrégation de dates
opérateur pour regrouper toutes les valeurs comme chaque jour dans la plage donnée.
Si ce dernier cas est ce que vous voulez, vous pouvez utiliser différents opérateurs pour décomposer les différentes périodes de date que vous souhaitez inclure dans vos résultats.