Например, у нас есть две коллекции
users {userId, firstName, lastName}
votes {userId, voteDate}
Мне нужен отчет об именах всех пользователей, которые имеют более 20 голосов в день.
Как мне написать запрос для получения данных из MongoDB?
Самый простой способ сделать это - кэшировать количество голосов для каждого пользователя в пользовательских документах.Затем вы можете получить ответ с помощью одного запроса.
Если вы не хотите этого делать, сопоставьте результаты в коллекцию результатов и запросите эту коллекцию.Затем вы можете запустить инкрементную карту-уменьшение, которая рассчитывает только новые голоса, чтобы поддерживать ваши результаты в актуальном состоянии: http://www.mongodb.org/display/DOCS/MapReduce#MapReduce-IncrementalMapreduce
Вы не должны пытаться делать соединения с Монго. Если вы, вы разработали свою схему в реляционной манере.
В этом случае я бы сохранил голосование как встроенный документ для пользователя.
В некоторых сценариях использование встроенных документов неосуществимо, и в этой ситуации я выполняю два запроса к базе данных и объединяю результаты на клиенте, а не с помощью MapReduce.
Я не могу дать более полный ответ сейчас, но вы должны быть в состоянии достичь этого с помощью MapReduce.Шаг Map вернул бы userIds пользователей, которые имеют более 20 голосов, шаг сокращения вернул бы firstName и lastName, я думаю ... посмотрите здесь .