如何在 mongoDB 中找到差异 b/w 2 个不同格式的日期

How to find difference b/w 2 dates of different formats in mongoDB

我在 mongoDB 中有一个集合,其中包含 2 个字段。 1. mongodate [ISO日期格式] 2. createtime [字符串格式的历元毫秒]

 > db.test.find()
     { "_id" : ObjectId("5eb2bbb3b278b3c384106a20"), "mongodate" : ISODate("2020-05-05T19:42:00Z"),"createtime" : "1588366164434" }
     { "_id" : ObjectId("5eb2bcabb278b3c384106a21"), "mongodate" : ISODate("2020-05-05T19:42:00Z"), "createtime" : "1588366164434" }

我需要找到(mongodate 和创建时间的差异)的平均值、最小值和最大值

但是由于这两个字段的日期格式不同,所以我无法正确使用$substract。有人可以帮我解决这个问题吗?

谢谢, 拉胡尔维尔马

createtime 字段看起来可能是纪元以来的毫秒数。

您可以使用 $toLong 运算符在聚合管道中将 ISODate 转换为毫秒,找到与 $subtract 的差异,然后使用 $group 阶段与 $ave$min$max 运算符。

db.collection.aggregate([
  {$project: {
      epoch: {$toLong: "$mongodate"},
      createepoch: {$toLong: "$createtime"}
  }},
  {$project: {
      difference: {$subtract: [
          "$epoch",
          "$createepoch"
      ]}
  }},
  {$group: {
      _id: null,
      min: {$min: "$difference"},
      max: {$max: "$difference"},
      avg: {$avg: "$difference"}
  }}
])

[Playground](https://mongoplayground.net/p/wVMdGLHhFpH)