mongodb中日期的差异为分钟

时间:2014-05-01 07:11:11

标签: mongodb mapreduce aggregation-framework

我有以下mongo db架构

    {
        "user" : ObjectId("52aaea01701054a10a002212"),
        "type" :"go_to_page", 
        "params" : 
        { 
            "page" : "users"
        },
        "created" :ISODate("2013-12-30T05:30:24.324Z")
    }

“页面”可以包含四个值中的任何一个,例如个人资料,事件,人物和喊叫。因此,如果用户从人员页面跳转到配置文件页面,我可以将它们保存到mongo数据库中,现在我可以拥有用户活动的日志。现在我必须找到用户在上述四个页面中花费的确切时间(分钟)。

mongo中是否有任何方法可以输入两个给定日期,并以分钟为单位返回两个日期之间的时间跨度。即如果我将数据提供为2014-04-29 23:50:00和2014-04-30 00:00:00,那么它应该返回10,因为它在两个给定日期之间是10分钟。在这方面的任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:3)

我尝试在mongo 2.4.8中使用代码,并发现当你在两个日期之间取差异时它以毫秒为单位返回结果,然后编写以下函数以在几分钟内获取数据。 在这里,我假设你的文档中有两个日期字段'输入'(当用户输入时)和'左'(当用户离开时),最后你以分钟计算差异并在同一文档中存储'timespent'

 db.collectioName.find().forEach(function(d){
    //you can use Math.ceil or Math.floor
    d.timespent=Math.round((d.visited-d.left)/60000); 
    db.collectioName.save(d);
 });

希望有所帮助