簡體   English   中英

我的 mongodb 聚合查詢花費了太多時間。 我怎樣才能提高性能?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM