我的mongodb集群中有一个扁平的文档结构(共享了3个文档),文档数量约为4.5亿。
以下是文档的主要字段:
起源城市 目的地城市 出发日期 ReturnDateDate TotalPriceADT
我需要从特定的OriginCity(例如PAR)中找到每个DestinationCity未来6个月的所有最佳价格(TotalPriceADT)。
这是我的查询:
db.cache_00001.aggregate(
[
{
$match: {
"OriginCity": "PAR",
$and:
[
{DepartureDateDate: {$gt: new ISODate("2019-02-12T00:00:00.000Z")}},
{DepartureDateDate: {$lt: new ISODate("2019-08-12T00:00:00.000Z")}},
]
},
},
{
"$sort": { "TotalPriceADT": 1}
},
{
"$group": {
"_id":
{
"DestinationCity": "$DestinationCity",
},
"Propositions":
{
"$first": "$$ROOT"
}
}
}
],
{
allowDiskUse: true,
})
查询有效,我得到正确的结果,问题是响应时间,非常慢。我用OriginCity&DepartureDateDate创建了一个复合索引。
您能告诉我如何改善查询以获得更好的响应时间吗?任何帮助将不胜感激。
杰罗姆(Jérome)