我有一个包含700万个文档的mongo集合,除了几个其他字段,每个文档都有一个“创建过程”。日期对象。我有一个索引' createdAt:1'在这个领域,它是在一个专门的mongo服务上举办的。
当我尝试按天分组时,查询变得非常慢。这是我的聚合查询:
{
"$match": {
"createdAt": {
$gte:new Date(1472189560111)
}
}
},
{
"$project": {
"date":
{
"$dateToString": {
"format": "%Y-%m-%d",
"date": "$createdAt"
}
},
"count": 1
}
},
{
"$group": {
"_id": "$date",
"count": {
"$sum": 1
}
}
},
{
"$sort": {
"_id": 1
}
},
{
"$project": {
"date": "$_id",
"count": 1,
"_id": 0
}
}
什么是提高绩效的好策略?我的聚合管道中有问题吗?我是否需要一个包含日期对象的字段,其中包含固定时间(如00:00)和该组的组?这似乎是一个基本的操作,我认为必须有一种mongodb原生方式。