MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Node.js + Mongoose.js Как да получите сумата на поръчките, направени за месец или седмица?

Ако просто искате общите поръчки в рамките на период от време, тогава можете просто да използвате заявка за диапазон на вашата дата, като използвате $gte и $lt стилови оператори:

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

query.exec(function(err, count) {

И това просто ще върне броя, ако документите са намерени в този диапазон.

Ако искате да сумирате стойност от вашия документ или дори наистина да извлечете нещо като „общо за деня“ от този период от време, тогава можете да използвате рамката за обобщаване, за да направите това:

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

Това не само използва $sum оператор за събиране на стойностите за нашето поле „orderTotal“, но също така използва обобщаване на дати оператор за групиране на всички стойности за всеки отделен ден в дадения диапазон.

Ако този последен случай е това, което искате, можете да използвате различни оператори там, за да разделите различни периоди от дати, които искате да съдържат в резултатите ви.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Запазете TimeZone с дата в mongodb

  2. MongoDB Java:Намирането на обекти в Mongo с помощта на оператор $in на QueryBuilder не връща нищо

  3. MongoDB - колекция от копия в java, без да се повтарят всички елементи

  4. Не може да импортира mongodb

  5. Мързеливо зареждане/превъртане на повече данни в Mongoose/Nodejs