如何比较两个字符串格式时间?

时间:2019-05-26 10:05:30

标签: mongodb mongodb-query aggregation-framework

我有一个名为“项目”的集合,该集合的预期时间和实际时间都为字符串格式

{
    "_id" : ObjectId("5ce7455d77af2d1143f84d49"),
    "project_name" : "p1",    
    "expected" : "0:11:30",    
    "actual" : "7:30:00",    
}

如何使用mongodb比较两个字符串格式时间? 我想知道实际时间是否超出预期

2 个答案:

答案 0 :(得分:1)

您可以将$split$toInt(MongoDB 4.0或更高版本)一起使用来将字符串值转换为秒数,然后使用$expr来比较两个字段:

stdout=

答案 1 :(得分:1)

您可以使用$dateFromString运算符将时间转换为所需的任何日期,然后可以轻松地使用$lte $gte执行简单的匹配操作。

db.collection.find({
  "$expr": {
    "$gt": [
      { "$dateFromString": {
        "dateString": {
          "$concat": ["2018-09-19", "T", "$actual"]
        }
      }},
      { "$dateFromString": {
        "dateString": {
          "$concat": ["2018-09-19", "T", "$expected"]
        }
      }}
    ]
  }
})