📅  最后修改于: 2023-12-03 15:06:14.541000             🧑  作者: Mango
在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
操作符过滤结果并指定要返回的字段。