sql >> Base de Datos >  >> NoSQL >> MongoDB

Node.js + Mongoose.js ¿Cómo obtener la suma de los pedidos realizados en un mes o una semana?

Si solo desea el total de pedidos dentro de un período de tiempo, puede usar una consulta de rango en su fecha usando $gte y $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) {

Y eso solo devolverá el conteo si los documentos se encuentran dentro de ese rango.

Si desea sumar un valor desde dentro de su documento, o incluso recuperar algo como "totales diarios" dentro de ese rango de fechas, puede usar el marco de agregación para hacer esto:

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) {

Eso no solo hace uso del $sum operador para sumar los valores de nuestro campo "orderTotal", pero también utiliza un agregación de fechas operador para agrupar en todos los valores como cada día dentro del rango dado.

Si ese último caso es lo que desea, puede usar varios operadores allí para dividir varios períodos de fechas que desea incluir en sus resultados.