如何在mongodb中找到两个日期之间的时差

Sag*_*u K 4 mongodb mongodb-query aggregation-framework

我将以下结构中的文档保存在我的 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"
}
Run Code Online (Sandbox Code Playgroud)

是否可以查询 loginTime 和 logoutTime 之间的时间段的文档。例如:大于 20 小时

mongodb version = 3.4

Ash*_*shh 6

您可以使用以下聚合

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

你必须从它开始,它会给你减去的时间戳,然后用它来获得以小时为单位的时间。$subtract loginTimelogoutTime$divide3600000

蒙戈游乐场