我正在使用聚合将两个集合合并在一起,并使用“输出”来生成包含所合并数据的新集合,但是这会花费太多时间(永无休止)。 如何提高性能? 馆藏A有260k文档,馆藏B有17.20m。
我已经用不同的数据集测试了相同的脚本,并且工作正常。乍一看,问题似乎与馆藏的大小有关。
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”,其中包含在“匹配”和“查找”条件下过滤的数据。
答案 0 :(得分:0)
聚合查询工作正常,问题与Mongo中的索引编制有关。 创建索引后,查询的性能要好得多。 索引是用以下方式创建的:
db.collection_B.createIndex( { property_B: 1 } );