我目前正在使用庞大的MongoDB数据库(2M5记录),并且在改善查询方面有些困难。
这是我的查询:
db.getCollection('visitors').aggregate([
{
"$match": {
"createdAt": {
"$gte": ISODate("2019-01-31T23:00:00.000Z"),
"$lte": ISODate("2019-06-22T21:59:00.000Z")
}
}
},
{
"$group": {
"_id": "$offer",
"visits": {
"$sum": 1
},
"eventsCount": {
"$sum": "$eventsTotal"
},
"revenuesCount": {
"$sum": "$conversionsCount"
},
"revenues": {
"$sum": "$conversionsTotal"
}
}
},
{
"$project": {
"_id": 0,
"visits": 1,
"eventsCount": 1,
"revenuesCount": 1,
"revenues": 1,
"id_offer": "$_id"
}
},
{
"$sort": {
"visits": -1
}
},
{
"$skip": 0
},
{
"$limit": 20
}
],{
"allowDiskUse": true,
})
当前,此查询需要38秒才能完成,而且时间太长,我需要减少此延迟。
我也将index用于createdAt属性和Offer。
因此,如果您有一些改进的建议,建议或其他建议!谢谢!
我的服务器配置: