MongoDB聚合查询执行速度慢
我正在对大小为的集合运行以下聚合查询:MongoDB聚合查询执行速度慢,mongodb,mongodb-query,Mongodb,Mongodb Query,我正在对大小为的集合运行以下聚合查询: 1:包含19382365个文档的所有api 2:带有8250124个文档的edge\u api 查询: 执行大约需要40到50秒。 在api响应的情况下,这是不可接受的。 我可以做些什么来提高查询的性能。 如果有人对此有任何建议,请提出。 谢谢。你有什么索引?For:all_api{“{u id”:1}{“节省时间”:1}{“edge\u id”:1}For:edge\u api{“{u id”:1}{“state”:1}你试过使用$explain吗?嗨,
1:包含19382365个文档的所有api
2:带有8250124个文档的edge\u api
查询:
执行大约需要40到50秒。
在api响应的情况下,这是不可接受的。
我可以做些什么来提高查询的性能。
如果有人对此有任何建议,请提出。
谢谢。你有什么索引?For:all_api{“{u id”:1}{“节省时间”:1}{“edge\u id”:1}For:edge\u api{“{u id”:1}{“state”:1}你试过使用$explain吗?嗨,Akrion,下面是这方面的查询计划:你能提供你的收藏样本吗?
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
}
});