約35000のドキュメントをフェッチしているときに、同じ問題が発生しました。これを解決するために、集計関数(sakulstra:aggregate
)を使用しました )そして私の場合、それはリクエストを信じられないほど後押ししました。結果の形式は明らかに同じではありませんが、必要なすべてのものを計算するために使用するのは簡単です。
前(7000ms):
const historicalAssetAttributes = HistoricalAssetAttributes.find({
date:{'$gte':startDate,'$lte':endDate},
assetId: {$in: assetIds}
}, {
fields:{
"date":1,
"assetId":1,
"close":1
}
}).fetch();
後(300ms):
const historicalAssetAttributes = HistoricalAssetAttributes.aggregate([
{
'$match': {
date: {'$gte': startDate, '$lte': endDate},
assetId: {$in: assetIds}
}
}, {
'$group':{
_id: {assetId: "$assetId"},
close: {
'$push': {
date: "$date",
value: "$close"
}
}
}
}
]);