Нам нужно иметь возможность быстро выполнять запросы через набор друзей и друзей друзей. Это было бы относительно просто в реляционной базе данных, но я немного зациклен на том, как это сделать в MongoDB. Мы сохраняем идентификаторы пользователей друзей пользователя в массиве в пользовательском документе, поэтому очевидное решение должно сделать это:
- Извлеките все пользовательские идентификаторы друзей из пользовательского документа
- Потяните все массивы друзей из пользовательских документов этих друзей (используя запрос $во всех идентификаторах друзей), объедините приложение в один набор, затем объедините это с идентификаторами пользователей первого уровня, чтобы получить набор всех друзей и друзья друзей
- Используйте этот набор для выполнения окончательного запроса (используя $in) для всех друзей и друзей друзей
В то время как это прямолинейно, это кажется огромным количеством назад и вперед, по сравнению с тем, что мы могли бы сделать с присоединением к реляционной базе данных. Есть ли более эффективный способ сделать это в MongoDB, или это проблема, наиболее подходящая для РСУБД?