【问题标题】:MongoDB Charts how to get time difference of createdAt and updatedAtMongoDB Charts如何获取createdAt和updatedAt的时间差
【发布时间】:2020-12-15 06:26:57
【问题描述】:

样本数据。

"id": 1
"createdAt": {
     "$date": "2020-09-29T01:52:10.199Z"
},
"updatedAt": {
     "$date": "2020-09-29T02:55:10.199Z"
}

"id": 2
"createdAt": {
     "$date": "2020-09-29T01:52:10.199Z"
},
"updatedAt": {
     "$date": "2020-09-29T01:55:10.199Z"
}

代码:

db.orders.aggregate([ 
{ 
    $project: { 
        products: 1, 
        dateDifference: { 
            $subtract: [ "$createdAt", "$updatedAt" ] 
        } 
    } 
},
{
    $unset: "_id"
}
])

输出:

"id": 1
"createdAt": {
     "$date": "2020-09-29T01:52:10.199Z"
},
"updatedAt": {
     "$date": "2020-09-29T01:55:10.199Z"
}
timeDifference: -695752959

预期输出

"id": 1
"createdAt": {
     "$date": "2020-09-29T01:52:10.199Z"
},
"updatedAt": {
     "$date": "2020-09-29T01:55:10.199Z"
}
timeDifference: 1 hr 3 minutes / 1:03:00 any of the 2

"id": 2
"createdAt": {
     "$date": "2020-09-29T01:52:10.199Z"
},
"updatedAt": {
     "$date": "2020-09-29T01:55:10.199Z"
}
timeDifference: 3 minutes / 0:03:00 any of the 2

averageDiff: 30 minutes // sample

我想获取 createdAt 和 updatedAt 字段的时差并获取时间的平均值,以便我可以在我的 MongoDB 图表上显示。有什么建议吗?

【问题讨论】:

  • 您将从查询中获得毫秒数,我的建议最好使用客户端语言使用该毫秒数。
  • 嗨,@turivishal 我打算在 MongoDB 图表中进行。这是否可以获得我的 createdAtupdatedAt 字段的平均时间?
  • @PinkyPromise 这个答案有用吗?
  • @Gibbs 是的,下面的答案也很好。谢谢。
  • 我对他们俩都投了赞成票。因为两者都有效。

标签: mongodb charts mongodb-query aggregation-framework mongodb-charts


【解决方案1】:

你可以拥有的最好的this

db.collection.aggregate([
  {
    $project: {
      dateDifference: {
        "$divide": [
          {
            $abs: {
              $subtract: [
                "$createdAt",
                "$updatedAt"
              ]
            }
          },
          3600000
        ]
      }
    }
  }
])

结果是几个小时。通过更改数字,您可以在天/秒内拥有它。默认你得到毫秒。

【讨论】:

    【解决方案2】:
    db.orders.aggregate([ { 
    $project: { 
        products: 1, 
      dateDifference: {$divide: [{$subtract: ["$updatedAt", "$createdAt"]}, 3600000]}
    } }])
    

    此查询将以小时为单位提供时间戳。

    【讨论】:

      猜你喜欢
      • 2018-10-08
      • 1970-01-01
      • 2019-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-16
      • 2020-10-08
      • 1970-01-01
      相关资源
      最近更新 更多