【发布时间】:2019-11-13 17:11:31
【问题描述】:
我在 MongoDB 中有一个包含超过 150 000 个文档的集合。我在 Node.js 中为 MongoDB 使用 Mongoose ODM v5.4.2。在检索数据时,我使用带有 $skip 和 $limit 的聚合查找进行分页。我的代码运行良好,但在 100k 个文档之后检索数据需要 10-15 秒。但是在 $skip 和 $limit 的帮助下,我一次只显示 100 条记录。我已经为foreignField 创建了索引。但它仍然变慢了。
campaignTransactionsModel.aggregate([{
$match: {
campaignId: new importModule.objectId(campaignData._id)
}
},
{
$lookup: {
from: userDB,
localField: "userId",
foreignField: "_id",
as: "user"
},
},
{
$lookup: {
from: 'campaignterminalmodels',
localField: "terminalId",
foreignField: "_id",
as: "terminal"
},
},
{
'$facet': {
edges: [{
$sort: {
[sortBy]: order
}
},
{ $skip: skipValue },
{ $limit: viewBy },
]
}
}
]).allowDiskUse(true).exec(function(err, docs) {
console.log(docs);
});
【问题讨论】: