Мне кажется, я понимаю ваш вопрос, но поправьте меня, если я ошибаюсь. Похоже, вы хотите сохранить пользователей каждого Приложения в их собственной коллекции. Это имеет ряд преимуществ и недостатков, которые вам необходимо оценить на основе сложных решений DBA, таких как соотношение R / W, нагрузка и т. Д.
Преимущества
- Как вы упомянули, обновление индексов займет меньше времени, поскольку у них есть только сегмент пользователей.
- Запросы по неиндексированным полям (если они есть) будут выполняться быстрее из-за меньшего числа элементов.
- Глобальная блокировка записи не будет играть такой важной роли, поскольку вы блокируете только приложение.
Недостатки
- Поскольку индексы ограничены коллекцией, у вас будет (число приложений) в несколько раз больше индексов, которые нужно хранить в памяти (индексы мало что дадут, если вы их разметите).
- Поскольку индексы и коллекции занимают свои собственные пространства имен, а каждое пространство имен занимает около 628 байт, вам нужно беспокоиться о стандартном 16 МБ ограничении пространства имен . Это ограничит количество приложений, которые вы можете иметь. например с двумя индексами вы ограничены примерно 8 000 коллекций.
- Наконец, поскольку ваши пользователи будут находиться в разных коллекциях, вы не сможете выполнять запросы в разных приложениях. Это может быть сорвано MapReduce, но добавляет больше сложности.
В конце дня вы можете достичь большинства из этих преимуществ, обойдя недостатки, просто разделив ключ приложения. Сценарий для многих коллекционеров заманчив, но я думаю, что в конечном счете не то, для чего оптимизирован монго.