Я выполняю следующий запрос агрегации для коллекций с размером:1: all_api с документами 193823652: edge_api с 8250124 документами Запрос:
db.getCollection('edge_api').aggregate([{
$match: {
state: {
$eq: 'rj'
}
}
},
{
$lookup: {
from: "all_api",
localField: "_id",
foreignField: "edge_id",
as: "road_speed"
}
},
{
$unwind: {
preserveNullAndEmptyArrays: true,
path: "$road_speed"
}
},
{
$project: {
road_code: "$road_code",
speed: {
$switch: {
branches: [{
case: {
$gt: ["road_speed.saving_time", 1535349227]
},
then: "$road_speed.spd_cur"
},
{
case: {
$lte: ["road_speed.saving_time", 1535349227]
},
then: "$road_speed.spd_pro"
}
]
}
}
}
},
{
$match: {
speed: {
$ne: null
}
}
},
{
"$group": {
"_id": "$_id",
"road_code": {
$first: "$road_code"
},
"speed": {
"$avg": "$speed"
}
}
}
], {
allowDiskUse: true,
cursor: {
batchSize: 10000000000
}
});
Выполнение заняло от 40 до 50 секунд.Что не приемлемо, в случае ответа API.Есть ли что-нибудь, что я могу сделать, чтобы сделать этот запрос производительности бить.Если у кого-то есть какие-либо предложения по этому поводу, пожалуйста, предложите.Спасибо.