sql >> Databáze >  >> NoSQL >> MongoDB

Node.js + Mongoose.js Jak získat součet objednávek zadaných za měsíc nebo týden?

Pokud chcete pouze celkový počet objednávek za určité časové období, můžete jednoduše použít dotaz na rozsah vašeho data pomocí $gte a $lt operátory stylu:

var query = Model.find({ 
    "createdDate": { 
        "$gte": new Date("2014-05-21"), "$lte": new Date("2014-05-29")
    }
}).count()

query.exec(function(err, count) {

A to pouze vrátí počet, pokud budou dokumenty nalezeny v tomto rozsahu.

Pokud chcete sečíst hodnotu z vašeho dokumentu nebo dokonce skutečně získat něco jako „denní součty“ z tohoto období, můžete k tomu použít agregační rámec:

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

To nejen využívá $sum operátor k sečtení hodnot pro naše pole "orderTotal", ale také využívá agregace dat operátor seskupit všechny hodnoty jako každý jednotlivý den v daném rozsahu.

Pokud chcete tento poslední případ, můžete použít různé operátory k rozdělení různých období, která chcete ve výsledcích obsahovat.




  1. Nelze se připojit k docker mongo

  2. Portování z SQLite do Redis

  3. Implementace stránkování pomocí MongoDB, Express.js a Slush

  4. 3 způsoby, jak převést datum na řetězec v MongoDB