【问题标题】:How to find the hours difference between two dates in mongodb如何在mongodb中找到两个日期之间的小时差
【发布时间】:2019-05-12 17:33:29
【问题描述】:

我的 mongodb 中保存了以下结构的文档。

用户日志

{
"_id":"111",
"studentID" : "1",
"loginTime" : "2019-05-01 09:40:00",
"logoutTime" : "2019-05-01 19:40:00"
},
{
"_id":"222",
"studentID" : "1",
"loginTime" : "2019-05-02 09:40:00",
"logoutTime" : "2019-05-02 20:40:00"
},
{
"_id":"333",
"studentID" : "2",
"loginTime" : "2019-05-02 09:40:00",
"logoutTime" : "2019-05-02 20:40:00"
}

是否可以查询 loginTime 和 logoutTime 之间的时间段的文档。eg: grater than 20 hrs

mongodb version = 3.4

【问题讨论】:

    标签: mongodb mongodb-query aggregation-framework


    【解决方案1】:

    你可以使用下面的聚合

    db.collection.aggregate([
      { "$project": {
        "difference": {
          "$divide": [
            { "$subtract": ["$logoutTime", "$loginTime"] },
            60 * 1000 * 60
          ]
        }
      }},
      { "$group": {
        "_id": "$studentID",
        "totalDifference": { "$sum": "$difference" }
      }},
      { "$match": { "totalDifference": { "$gte": 20 }}}
    ])
    

    您只需从 logoutTime 输入 $subtract loginTime,它会为您提供减去的时间戳,然后只需 $divide3600000 即可获得以小时为单位的时间。

    MongoPlayground

    【讨论】:

    • 你能看看这个LINK
    猜你喜欢
    • 2011-04-15
    • 2012-10-10
    • 2021-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多