【发布时间】:2020-02-28 09:01:41
【问题描述】:
这就是我如何进行聚合查询以获取开始时间和结束时间之间的平均时间(格式均为 ISODate("2020-02-24T13:08:00.123Z"))。
但我需要将结果数据分成两组,因为我需要获取开始时间为 04/2019 - 09/2020 的所有数据集的平均数据,第二组所有数据的开始时间为 10/2019 - 04/ 2020 年。 我不明白如何按这两个间隔对 ISODate 值进行分组
const data = await Data.aggregate([
{
$match: {
type: { $exists: true },
statsIgnore: { $exists: false }
}
},
{
$group: {
_id: '$type',
Datasets: { $sum: 1 },
Average: {
$avg: {
$divide: [
{ $subtract: ['$timeEnd', '$timeStart'] },
60000
]
}
}
}
}
]).toArray()
我的数据结构
[
{
_id: ObjectId("5d9242cf863feb0b8d70d12e"),
timeStart: ISODate("2020-02-24T13:08:00.123Z"),
timeEnd: ISODate("2020-02-24T13:18:00.123Z"),
type: 'type1'
},
{
_id: ObjectId("5d9242cf863feb0b8d70d12f"),
timeStart: ISODate("2019-08-29T17:05:00.123Z"),
timeEnd: ISODate("2019-08-29T17:25:00.123Z"),
type: 'type1'
}
]
在这个简单的数据示例中,只有一种类型,夏季使用单个数据集,冬季间隔使用单个数据集。
所以结果应该是冬季平均 10 分钟,夏季平均 20 分钟(对于 type1 组)。
【问题讨论】:
-
对我来说,不清楚你想得到什么。预期的输出是什么?
标签: javascript mongodb