Как сказал Gates VP, вам нужно добавить кеш в глобальную область видимости.Итак, чтобы дать полный ответ, учитывая ваш сценарий, вам нужно сделать следующее:
db.runCommand(
{ mapreduce : <your collection>,
map : <your map function, or reference to it>,
reduce : <your reduce function, or reference to it>,
scope : { cache : {} }
}
);
Команда вставит содержимое параметра объекта scope в ваш глобальный контекст.Кэширование будет работать в соответствии с тем, как вы используете его в своей функции карты.Я проверял это.