mongoDB совокупная производительность запроса $graphLookup
Проблема:
Мой совокупный запрос $graphLookup занимает слишком много времени, а именно 5-6 минут, чтобы найти связи первой, второй и третьей степени для людей с высокими связями, таких как «Супермен», см. пункт 2 ниже.
Я использую пример графика веб-сайта mongodb в качестве вдохновения для дизайна моей схемы, мой проще, вы можете просмотреть мои данные, схему и запрос здесь mongoplayground.net
Полезная информация
Как следует из руководства, двунаправленная структура узлов соединяет двух людей друг с другом. Один узел существует от «Супермена» до «Лоис», другой узел существует от «Лоис» до «Супермена».
Общее количество документов в моей коллекции составляет 6791, а количество «суперменов» — 2868.
db.getCollection("people").find({from: "superman"}).count() // 2868
Каждый документ в коллекции имеет 3 дополнительных поля, для краткости я продублировал их только один раз в ссылке MongoPlayGround, строки 6–8.
У меня есть отдельные индексы по полям и
У меня есть составной индекс
to
иfrom
Совокупное использование запросов
{readPreference: 'secondaryPreferred', allowDiskUse: true}
Использование кластера mongoDB Atlas 6.0.5 M10
Сборник читают часто, пишут редко
Открыт для изменения дизайна схемы