У вас нет доступа к курсору в контексте сокращения карты, поэтому вы никак не можете «запомнить» предыдущий документ. В map-Reduce каждый документ обрабатывается изолированно .
Причиной этого является то, что map-Reduction может работать параллельно на нескольких шардах, что приводит к повышению производительности. В будущем также могут поддерживаться многопоточные задания сокращения карт. В этих сценариях нет настоящего «предыдущего элемента», поскольку вы обрабатываете несколько частей коллекции одновременно. Это может быть либо предыдущий элемент в текущей цепочке, либо предыдущий элемент в текущем шарде, либо предыдущий элемент во всех сегментах.
Что касается вашего примера, если вы отсортировали запрос по age
, тогда все ранее обработанные документы имеют возраст, который меньше или равен возрасту текущего элемента. Возраст всех необработанных предметов будет больше или равен возрасту текущего предмета. Вы можете использовать find()
для извлечения этих элементов, но я бы не рекомендовал это, поскольку это может ухудшить производительность. Кроме того, вы можете получить доступ только к текущему элементу , а не к предыдущему элементу, как вы пытаетесь сделать в своем примере.
Я думаю, вы неправильно понимаете концепцию уменьшения карты. Чего вы пытаетесь достичь?