mongodb - MongoDB Charts如何获取createdAt和updatedAt的时间差
问题描述
样本数据。
"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 图表上。关于如何做的任何建议?
解决方案
你能拥有的最好的
db.collection.aggregate([
{
$project: {
dateDifference: {
"$divide": [
{
$abs: {
$subtract: [
"$createdAt",
"$updatedAt"
]
}
},
3600000
]
}
}
}
])
结果是几个小时。通过更改数字,您可以在天/秒内拥有它。默认你得到毫秒。
推荐阅读
- drake - 使用 Python 序列化 Drake 对象
- python - Python 3.6 将字典转换为排序列表
- c# - WinDBG Preview - 从其他 Visual Studio 项目加载源代码
- python - 如何知道 GEKKO 花了多长时间解决我的模型?
- ios - 加载类时 UITableViewCell UIView 颜色不会立即更改
- azure - Update-AzureRmVmss、Update-AzureRmVmssInstance 和 Update-AzureRmVmssVM 有什么区别?
- azure-devops - Azure Devops - 用户故事描述/接受标准字段中的 Markdown 支持?
- oracle - Oracle APEX - 默认主键值“t1000”
- c++ - 等待 MPI-IO 在 MPI_File_open 上同步的进程旋转
- javascript - 使 Google Chrome 浏览器图标在任务栏上闪烁