从 MongoDB 中的日期集合中获取不同的日期



我想用数据库中存在数据的突出显示单元格填充日期范围选择器显示。因此,我需要将我的收藏减少到存在记录的日期数组,例如

// collection
[{
timestamp: ISODate("2020-01-28T20:42:00.000Z"),
data: 1,
},{
timestamp: ISODate("2020-01-28T18:42:00.000Z"),
data: 10,
},{
timestamp: ISODate("2020-01-28T15:42:00.000Z"),
data: 100,
},{
timestamp: ISODate("2020-01-25T15:42:00.000Z"),
data: 1000,
},{
timestamp: ISODate("2020-01-17T15:42:00.000Z"),
data: 10000,
}]

简化为:

['2020-01-28', '2020-01-25', '2020-01-17']

存储在我的数据库中的数据的性质意味着,如果在给定日期存在任何数据,则该日期存在大量数据。因此,查询给定日期范围的整个集合,然后减少结果的速度很慢。

是否有一种快速(更(的方式来查询集合以返回存在数据的不同日期集?

据我所知,您只能从 mongodb 查询中获取 json 格式的结果。

我可以得到以下结果,可以很容易地将其转换为 javascript 代码中的字符串数组:

[
{
"_id": "20200125"
},
{
"_id": "20200117"
},
{
"_id": "20200128"
}
]

我在阶段中使用$dateToString聚合运算符$project。

db.collection.aggregate([
{
$project: {
_id: 0,
date: {
$dateToString: {
format: "%Y%m%d",
date: "$timestamp"
}
}
}
},
{
$group: {
_id: "$date"
}
}
])

操场

最新更新