[英]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.