ОК, есть два способа сделать это:
Метод № 1: Уменьшение карты
Итак, сначала вы захотите запустить карту -уменьшить, а не группу.
Используйте Map-Reduce с переменной out, которая сгенерирует новую коллекцию.После этого вы сможете выполнять сводные запросы к этой новой коллекции.
Причина, по которой вы это сделаете, заключается в том, что вы запрашиваете дорогой запрос, поэтому гораздо разумнее получить к нему доступ "не совсем "в режиме реального времени".
Метод № 2: Двойная запись
Вы можете в основном поддерживать две коллекции: "подробности" (верхняя) и "сводка"(нижний).Всякий раз, когда вы делаете запись в детали, также выполняйте обновление сводки.
MongoDB имеет несколько методов массива ( $ push, $ pull, $ slice ), которые должны сделать это возможнымчтобы поддерживать массив «poll_created» в актуальном состоянии.
Предпочтения
Выбранный вами метод полностью зависит от типа вашей архитектуры и опыта пользователя, которыйты хочешь.Лично я бы просто использовал метод № 2 и просто продолжал добавлять к массиву «Vote_created».Я бы поместил синтаксис «Майк, Джон и еще 3 ...» где-то в представление, потому что это действительно логика представления, а не логика БД.
Да, метод № 2 занимает больше места, но также даетВы быстрые ответы на вопросы, которые вы задаете много.Так что вам придется пожертвовать пространством, чтобы получить эту скорость.