【问题标题】:How to get the difference in millis between a field value and current time in Mongo collection [duplicate]如何在Mongo集合中获取字段值和当前时间之间的毫秒差异[重复]
【发布时间】:2018-06-01 15:35:20
【问题描述】:

我有一个集合,其中单个文档如下所示:

{
  "_id" : "123456789",
   "created_timestamp" : "1522950461031"
}

如您所见,created_timestamp 日期以字符串形式存储为纪元值。 (很遗憾现在无法改变)

我需要编写一个查询来计算“经过的时间”,即current time - created_time 在任何给定时间点的所有文档。

这是我迄今为止尝试过的:

db.getCollection('testEntity').aggregate([
{$match : {"_id" : "123456789"}},
{$project: {_id : 1, created_timestamp: 1 ,
    dateDifference: { $subtract: [ new Date() , new  Date("$created_timestamp")]}}}]) 

但它不能正确计算差异。我认为在$subtract 中没有正确检测到该字段。有什么建议可以正确重写吗?

【问题讨论】:

  • dateDifference: { $subtract: [ new Date() , "$created_timestamp" ] } 将减去两个 BSON 日期并返回它们之间的毫秒时间差。甚至还有关于返回 BSON 日期的进一步演示,该日期自 Group Result by 15 minute Time Interval 的纪元以来获得毫秒。但是您的字段是“字符串”而不是数字。目前 MongoDB 无法做到这一点,并且那里也有相关信息。
  • 谢谢,我会考虑将我的字段转换为数字。

标签: mongodb aggregation-framework


【解决方案1】:

MongoDb 不提供类型更改。在您的情况下,时间戳应该是您要应用的条件的数量。因此,我建议您使用更新查询通过一些编程代码显式转换数据库中的数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-18
    • 1970-01-01
    • 2017-05-31
    • 1970-01-01
    • 1970-01-01
    • 2015-09-22
    • 1970-01-01
    相关资源
    最近更新 更多