2017-08-11 23 views
0

我試圖找到在特定時間段內創建的一些記錄。 然後我想計算這些記錄的總和值。mongodb在時間段內獲得價值的總和

{"member_id":"3755","value":184607,"create_time":"2017-8-11 10:36:58" 
{"member_id":"3234","value":74582,"create_time":"2017-8-11 10:36:58", 
{"member_id":"4857","value":36776,"create_time":"2017-8-11 10:36:58", 
{"member_id":"2042","value":15753,"create_time":"2017-8-11 10:36:58", 
{"member_id":"1374","value":655103,"create_time":"2017-8-11 10:36:59" 
{"member_id":"3777","value":595437,"create_time":"2017-8-11 10:36:59" 
{"member_id":"5271","value":306364,"create_time":"2017-8-11 10:36:59" 
{"member_id":"2143","value":164831,"create_time":"2017-8-11 10:36:59" 
{"member_id":"1374","value":655103,"create_time":"2017-8-11 10:36:59" 
{"member_id":"3777","value":595437,"create_time":"2017-8-11 10:36:59" 
{"member_id":"5271","value":306364,"create_time":"2017-8-12 10:36:59" 
{"member_id":"2143","value":164831,"create_time":"2017-8-12 11:28:59" 
{"member_id":"3777","value":595437,"create_time":"2017-8-12 14:46:59" 
{"member_id":"5271","value":306364,"create_time":"2017-8-13 11:36:59" 
{"member_id":"2143","value":164831,"create_time":"2017-8-13 13:36:59" 
... 

下面是獲得的價值總和的代碼,我怎麼能得到2017年8月11日10:36:00和2017年8月12日14:00:00

之間的價值總和
connection.aggregate([{ 
       $match: match 
      }, 
      { 
       $group: { 
        _id: null, 
        total: { 
         $sum: "$value" 
        } 
       } 
      } 
     ], function(err, result) { 
      if (err) throw (err); 
      result = { 
       member_id: member_id, 
       total: result[0].total, 
      } 
      cb(result); 
     }); 

回答

1

不要將日期存儲爲字符串。以日期格式存儲並嘗試以下查詢

db.connection.aggregate([{ 
     "$match" : { "create_time" : { "$gt" : new ISODate("2017-08-11T10:36:00.000Z"), "$lt" : new ISODate("2017-08-12T14:00:00.000Z") }}, 
     "$group" : { "_id": "$member_id", "total": { "$sum": 1 }} 
    }]) 
1
let todayDate = new Date(); 
let beforeDate = new Date(); 
beforeDate.setDate(beforeDate.getDate() - 15); // 15 is days 
db.collections.aggregate([ 
    { 
     "$match": 
      { 
       "insertDate": 
        { 
         "$lte": todayDate, 
         "$gte": beforeDate 
        } 
      } 
    } 
]) 
.exec() 
.then((result) => { 
    //result 
}) 
.catch((err) => { 
    // error 
});