📜  两个时间戳之间的 mongodb 时间间隔 (1)

📅  最后修改于: 2023-12-03 15:06:14.541000             🧑  作者: Mango

MongoDB时间间隔计算

在MongoDB中,我们可以使用Aggregation框架来计算两个时间戳之间的时间间隔。

请注意,MongoDB存储的时间戳是自纪元以来的毫秒数。

语法
db.collection.aggregate([
   { $project: { timeDiff: { $subtract: [new Date("time2"), new Date("time1")] } } }
])

在上面的语法中,time2和time1是要比较的两个时间戳。 $subtract操作符用于计算时间间隔,$project操作符用于过滤结果并指定要返回的字段。

示例

我们来看一个简单的例子。假设我们有一个包含以下字段的集合:

{
   "_id": 1,
   "name": "John Smith",
   "dateOfBirth": ISODate("1980-02-01T00:00:00Z"),
   "lastLogin": ISODate("2019-10-01T12:30:00Z")
}

如果我们想计算上次登录和出生日期之间的天数差异,我们可以使用以下查询:

db.users.aggregate([
   {
      $project: {
         name: 1,
         daysSinceBirth: { $divide: [{ $subtract: [new Date(), "$dateOfBirth"] }, 1000 * 60 * 60 * 24] },
         daysSinceLastLogin: { $divide: [{ $subtract: [new Date(), "$lastLogin"] }, 1000 * 60 * 60 * 24] }
      }
   }
])

在这个例子中,我们计算了今天和生日、最后一次登录之间的时间差,然后将它们以天为单位显示。

结论

MongoDB提供了Aggregation框架来计算两个时间戳之间的时间间隔。您可以使用 $subtract操作符计算时间差,并使用$project操作符过滤结果并指定要返回的字段。