我正在试图找到一些在特定时间内创建的记录。然后我要计算这些记录的值之和。
{"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之间的值之和?
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);
});发布于 2017-08-11 08:36:13
不要将日期存储为字符串。使用日期格式存储它,然后尝试下面的查询
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 }}
}])发布于 2017-08-11 08:57:58
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
});https://stackoverflow.com/questions/45630089
复制相似问题