Ваш подход сохранит каждый результат сокращения карты в отдельной коллекции. Это нормально, если вам нужен доступ к этим «историческим» результатам.
Если вас интересует только результат last , вы можете использовать single collection в качестве кэша. Вы можете указать выходной набор задания уменьшения карты, используя опцию out
.
db.collection.mapReduce(map, reduce, { out: "cachedResult" });
Постоянная коллекция cachedResult
будет содержать результат.
Как вы можете прочитать в документации , задание сокращения карты все еще будет использовать временную коллекцию при выполнении . Эта временная коллекция атомарно переименовывается в выходную коллекцию по завершении. Это означает, что вы можете безопасно перезапустить задание уменьшения карты , используя тот же набор выходных данных, не беспокоясь о недопустимом кэше при уменьшении карты.