Se você quiser apenas o total de pedidos dentro de um período de tempo, basta usar uma consulta de intervalo em sua data usando
$gte
e $lt
operadores de estilo:var query = Model.find({
"createdDate": {
"$gte": new Date("2014-05-21"), "$lte": new Date("2014-05-29")
}
}).count()
query.exec(function(err, count) {
E isso apenas retornará a contagem se os documentos forem encontrados dentro desse intervalo.
Se você quiser somar um valor de dentro do seu documento ou até mesmo recuperar algo como "totais diários" desse intervalo de datas, poderá usar a estrutura de agregação para fazer isso:
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) {
Isso não apenas faz uso do
$sum
operador para somar os valores para nosso campo "orderTotal", mas também usa um agregação de data
operador para agrupar em todos os valores como cada dia dentro do intervalo determinado. Se esse último caso for o que você deseja, você pode usar vários operadores para dividir vários períodos de data que deseja conter em seus resultados.