Поиск всех документов, которые не имеют отношения с другими в MongoDB - PullRequest
0 голосов
/ 03 мая 2020

У меня есть коллекция пользователей и один из сообщений. Я хочу найти все сообщения, которые еще не просматривал один пользователь. Я ожидаю, что количество сообщений, просмотренных одним пользователем, со временем может возрасти, возможно, достигнув десятков или сотен тысяч для некоторых пользователей, хотя у большинства пользователей будет всего несколько сотен.

Как мне организовать свои данные в базу данных MongoDB?
Должен ли я хранить массив просматриваемых постов в коллекции User, в коллекции Post, в отдельной коллекции (документ на просмотр) или что-то еще?

Как мне затем запросить базу данных?

1 Ответ

0 голосов
/ 03 мая 2020

Запрос должен быть сконструирован с использованием конвейера агрегации. Сначала $lookup, чтобы присоединиться к сообщениям для просмотра сообщений, затем $match с $exists: false для удаления существующих сообщений.

Это не будет дешевым запросом с большим объемом данных. Одна из стратегий сделать это быстрее - ограничить, например, время, отводимое на посты до присоединения, или ограничить посты форумом / тегом и т. Д. c.

...