матче ищешь что нужно
2. сортируешь
3. фильтруешь
4. проецируешь
о каких 2х запросах или 4х тем более речь?
2 match'а писал не я, я наоборот хочу всё в одном скоупе агрегации сделать. Проблема в том, что для матча надо заджойнить 4 коллекции, так как к ним применяются некоторые фильтры и данные с них нужны клиенту. Раньше это выполнялось через два отдельных запроса в базу + отдельным populate. Я попробовал заменить эту методику на lookup'ы с фильтрацией на месте, но время выполнения запроса выросло почти в два раза, Отсюда такие вопросы
переделайте порядок лукапов, чтобы на первых было отсеяно максимальное количество доков, либо денормализируйте данные/меняйте структуру
пробуй тогда другой подход, грузить не БД, а приложение этой работой. если оптимизировать запрос не удаётся, а в этом случае как не изменяй, и через facet будет тот же результат придётся писать асинхронщину, разбив каждый запрос на мини-запрос, итого 4 шт. асинхронно единственная оптимизация скорее будет в фильтрации на уровне БД + проекция ну а в приложении уже соединить в один джсончик
пробовал добавлять в каждый из лукапов нужные матчи, результат хуже)
а какие размеры связываемых таблиц?
Обсуждают сегодня