В настоящее время я использую Mongoose для проекта и пытаюсь оптимизировать несколько агрегирующих запросов.
Использование кэширования для кэширования результатов довольно просто для MongoDB:
const res = cache.get(key);
if (res) {
return res;
}
MyModel.aggregate([]).then(docs => {
cache.add(key, docs);
});
Нов моем сценарии у меня есть куча агрегатов, которые выполняют похожие тяжелые операции на самых первых этапах своего конвейера
const c = MyModel.aggregate([
{$match : {},}}
{$project :{}},
{$unwind :{}},
// extra stages for c
]);
const d = MyModel.aggregate([
{$match : {},}}
{$project :{}},
{$unwind :{}},
// extra stages for d
]);
Я оптимизировал свои схемы с помощью индексов и опции allowDiskUse
, и я ищунемного больше сока.
Есть ли способ заполнить первые стадии конвейера, используя механизм кэширования или даже способ объединения каналов?Кэширует ли MongoDB какие-либо результаты в конвейере рабочей области?
Перемещение преобразований на клиентскую сторону не вариант, так как я хочу использовать как можно больше энергии из своей базы данных.Заранее спасибо.