首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mongodb在时间段内得到值和

mongodb在时间段内得到值和
EN

Stack Overflow用户
提问于 2017-08-11 08:09:01
回答 2查看 74关注 0票数 0

我正在试图找到一些在特定时间内创建的记录。然后我要计算这些记录的值之和。

代码语言:javascript
复制
{"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之间的值之和?

代码语言:javascript
复制
  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);
        });
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-08-11 08:36:13

不要将日期存储为字符串。使用日期格式存储它,然后尝试下面的查询

代码语言:javascript
复制
 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
EN

Stack Overflow用户

发布于 2017-08-11 08:57:58

代码语言:javascript
复制
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
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45630089

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档