[英]My mongodb aggregation query is taking too much time. How can I enhance the performance?
我正在使用聚合加入两个集合,并使用“输出”来生成一个包含加入数据的新集合,但这需要太多时间(永远不会结束)。 我怎样才能提高性能? 集合 A 有 260k 文档,集合 B 有 17.2m。
我已经用不同的数据集测试了相同的脚本,它工作正常。 乍一看,问题似乎与 collections 的大小有关。
db.colection_A.aggregate([
{
$match : { property_X: "X" }
},
{ "$lookup":
{
from: "collection_B",
localField: "property_A",
foreignField: "property_B",
as: "joined_data"
}
},
{ $unwind:
{
path: "$joined_data",
preserveNullAndEmptyArrays: false
}
},
{ $project:
{
"_id": 0,
"joined_data": 1
}
},
{ $replaceRoot:
{ newRoot: "$joined_data" }
},
//{ $limit : 1 }
{ $out: "new_collection"}
]);
预期结果是创建包含在“匹配”和“查找”条件中过滤的数据的集合“new_collection”。
聚合查询工作正常,问题与 Mongo 中的索引有关。 创建索引后,查询执行得更好。 索引是通过以下方式创建的:
db.collection_B.createIndex( { property_B: 1 } );
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.