Честно говоря, если вы не можете вписать «Сообщения» в «Пользователи», то у вас есть два варианта.
- Денормализация некоторых пользовательских данных внутри сообщений.Тогда вы можете искать только в одной коллекции.
- Выполните два запроса.(один для поиска пользователей, другой - для поиска сообщений)
Исходя из вашего вопроса, вы пытаетесь сделать № 2.
Теоретически вы можете создать список идентификаторов пользователей (или ссылки), а затем найти все сообщения, принадлежащие пользователю $in
этого массива.Но очевидно, что этот подход ограничен.
Может ли $ in обрабатывать массив из 10 000 000 записей?
Посмотрите, планируете ли вы "запросить" свои сообщения для всехпользователи в наборе 10 000 000 пользователей вы уже прошли этап «запроса».Вы сами говорите, что у каждого пользователя есть тысячи сообщений, поэтому вы говорите о запросе «Пользователи с сообщениями, которые живут в Лондоне» , возвращающем 100 миллионов записей.
100 миллионовзаписи не являются запросами, это набор данных!
Если вы беспокоитесь о нарушении команды $in
, тогда я настоятельно рекомендую использовать map / redu * .Mongo Map / Reduce создаст новую коллекцию для вас.Затем вы можете урезать или суммировать этот набор данных по своему усмотрению.