gpt4 book ai didi

mongodb - 如何汇总和平均两个日期之间的时间?

转载 作者:行者123 更新时间:2023-12-05 03:08:05 25 4
gpt4 key购买 nike

假设下面是我的元素结构。我如何才能 SHELL 查询 mongodb 并获得数据库中每次旅行的平均差异(平均长度)?我猜减去日期?但是如何减去然后取平均值呢?

"_id": {
"$oid": "5445ab058767000062"
},
"comment": null,
"scheduled_request": false,
"status": "blah",
"timestamp_started": {
"$date": "2014-10-21T00:38:28.990Z"
},
"timestamp_transaction_complete": {
"$date": "2014-10-21T00:49:12.990Z"
},
"user_id": "5445a9000057"

更新 ========这是我的查询

db.ambulance_requests.aggregate([
{ "$group": {
"_id": null,
"avg_time": {
"$avg": {
"$subtract": [
"$timestamp_transaction_complete",
"$timestamp_started"
]
}
}
}}
])

和我的结果(来自 Mac 终端 Shell):

{ "_id" : null, "avg_time" : 0 }

最佳答案

$subtract$avg通过在 $group 中应用它们流水线阶段。对于“一切”,使用 null 作为分组键:

db.trips.aggregate([
{ "$group": {
"_id": null,
"avg_time": {
"$avg": {
"$subtract": [
{ "$ifNull": [ "$timestamp_completed", 0 ] },
{ "$ifNull": [ "$timestamp_started", 0 ] }
]
}
}
}}
])

当你$subtract在另一个 BSON Date 对象上,差异作为它们之间的毫秒间隔返回。这也是为其他目的提取毫秒值的常用技术。

您提供的单个文件:

{
"comment" : null,
"scheduled_request" : false,
"status" : "blah",
"timestamp_started" : ISODate("2014-10-21T00:38:28.990Z"),
"timestamp_completed" : ISODate("2014-10-21T00:49:12.990Z"),
"user_id" : "5445a9000057"
}

问题中单个文档的结果:

/* 1 */
{
"_id" : null,
"avg_time" : 644000.0
}

关于mongodb - 如何汇总和平均两个日期之间的时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45990184/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com