以小时、分钟、秒为单位的平均间隔时间 Mongodb
Average interval time in Hrs, Minutes, seconds Mongodb
我正在尝试获取集合中所有文档的平均时间间隔。
我试图弄清楚的输出是这种格式平均:HH:MM:SS
它将计算每个文档的时间间隔,然后将其聚合以获得整个数据集的平均时间间隔。
这是示例数据。
{
"_id" : ObjectId("60dc1e7d72296329347b2bbe"),
"name": "firstupdate",
"starttime" : ISODate("2021-06-30T07:38:06.926Z"),
"endtime" : ISODate("2021-06-30T12:35:08.265Z"),
},
{
"_id" : ObjectId("60dc1e7d72296329347b2bce"),
"name": "secondupdate",
"starttime" : ISODate("2021-07-29T07:41:06.926Z"),
"endtime" : ISODate("2021-07-30T01:52:07.937Z"),
},
{
"_id" : ObjectId("60dc1ff472d9f809d6d2f23e"),
"name": "thirdupdate",
"starttime" : ISODate("2021-07-15T07:43:06.926Z"),
"endtime" : ISODate("2021-07-14T10:34:13.269Z"),
},
{
"_id" : ObjectId("60dc204e03362e293a5f5014"),
"name": "fourthupdate",
"starttime" : ISODate("2021-07-21T05:11:23.654Z"),
"endtime" : ISODate("2021-07-21T09:46:33.000Z"),
},
{
"_id" : ObjectId("60dc21436a9e0e09f9a551ae"),
"name": "fifthupdate",
"starttime" : ISODate("2021-07-07T02:34:06.926Z"),
"endtime" : ISODate("2021-07-07T08:11:06.926Z"),
},
提前致谢
你可以使用这个:
db.collection.aggregate([
{
$group: {
_id: null,
diff: {
$avg: {
$dateDiff: {
startDate: "$starttime",
endDate: "$endtime",
unit: "millisecond"
}
}
}
}
},
{
$set: {
diff: {
$dateToString: {
date: { $toDate: "$diff" },
format: "%H:%M:%S"
}
}
}
}
])
可选择使用 format: "%j %H:%M:%S"
,
%j
是一年中的第几天,即这将 return 有效输出长达一年。否则你需要一些日期数学。
我正在尝试获取集合中所有文档的平均时间间隔。
我试图弄清楚的输出是这种格式平均:HH:MM:SS
它将计算每个文档的时间间隔,然后将其聚合以获得整个数据集的平均时间间隔。
这是示例数据。
{
"_id" : ObjectId("60dc1e7d72296329347b2bbe"),
"name": "firstupdate",
"starttime" : ISODate("2021-06-30T07:38:06.926Z"),
"endtime" : ISODate("2021-06-30T12:35:08.265Z"),
},
{
"_id" : ObjectId("60dc1e7d72296329347b2bce"),
"name": "secondupdate",
"starttime" : ISODate("2021-07-29T07:41:06.926Z"),
"endtime" : ISODate("2021-07-30T01:52:07.937Z"),
},
{
"_id" : ObjectId("60dc1ff472d9f809d6d2f23e"),
"name": "thirdupdate",
"starttime" : ISODate("2021-07-15T07:43:06.926Z"),
"endtime" : ISODate("2021-07-14T10:34:13.269Z"),
},
{
"_id" : ObjectId("60dc204e03362e293a5f5014"),
"name": "fourthupdate",
"starttime" : ISODate("2021-07-21T05:11:23.654Z"),
"endtime" : ISODate("2021-07-21T09:46:33.000Z"),
},
{
"_id" : ObjectId("60dc21436a9e0e09f9a551ae"),
"name": "fifthupdate",
"starttime" : ISODate("2021-07-07T02:34:06.926Z"),
"endtime" : ISODate("2021-07-07T08:11:06.926Z"),
},
提前致谢
你可以使用这个:
db.collection.aggregate([
{
$group: {
_id: null,
diff: {
$avg: {
$dateDiff: {
startDate: "$starttime",
endDate: "$endtime",
unit: "millisecond"
}
}
}
}
},
{
$set: {
diff: {
$dateToString: {
date: { $toDate: "$diff" },
format: "%H:%M:%S"
}
}
}
}
])
可选择使用 format: "%j %H:%M:%S"
,
%j
是一年中的第几天,即这将 return 有效输出长达一年。否则你需要一些日期数学。