Зачем использовать Монго для системы обмена сообщениями? Независимо от того, насколько быстрым является статическое хранилище (и монго очень быстрое), будь то монго или дб, для имитации очереди сообщений вам придется использовать какой-то опрос, который не очень масштабируемый или эффективный. Конечно, вы не делаете ничего ужасно интенсивного, но почему бы просто не использовать правильный инструмент для правильной работы? Используйте систему обмена сообщениями, такую как Кролик или ActiveMQ .
Если вы должны использовать Монго (может быть, вы просто хотите поиграть с ним, и этот проект является хорошим шансом для этого?) Я полагаю, у вас будет коллекция для пользователей (где у каждого объекта пользователя есть список очереди, которые слушает пользователь). Для сообщений вы можете иметь коллекцию для каждой очереди, но тогда вам придется опрашивать каждую очередь, в которой вы заинтересованы, на наличие сообщений. Лучше было бы иметь одну коллекцию в виде очереди, так как в монго легко выполнять запросы «в» к одной коллекции, поэтому было бы легко сделать такие вещи, как «получить все сообщения новее, чем X, в любых очередях, где очередь .name в списке [a, b, c] ".
Вы также можете подумать о том, чтобы настроить свою коллекцию как коллекцию с монго-ограничением, что означает, что, когда вы настраиваете коллекцию, вы сообщаете монго, что ваша коллекция должна содержать только Х количество байтов или Х количество элементов. Добавление дополнительных элементов имеет поведение «первым пришел - первым вышел», которое в значительной степени идеально подходит для очереди сообщений. Но опять же, это не совсем система обмена сообщениями.