$graphLookup$graphLookup — это этап агрегации MongoDB, который выполняет рекурсивный поиск в коллекции. Он позволяет обходить иерархические или граф-подобные структуры данных, следуя связанным документам через несколько уровней.
$graphLookup повторно ищет документы, соответствующие условию, собирая результаты до тех пор, пока не будут найдены все связи. Ключевые параметры включают:
from – коллекция для поискаstartWith – начальное значение для поискаconnectFromField – поле, значение которого используется для поиска следующего документаconnectToField – поле, проверяемое на соответствие connectFromFieldas – имя выходного поля массиваmaxDepth – опциональное ограничение глубины рекурсииdb.employees.aggregate([
{ $match: { name: "Alice" } },
{
$graphLookup: {
from: "employees",
startWith: "$_id",
connectFromField: "_id",
connectToField: "managerId",
as: "subordinates"
}
}
])
Этот запрос начинает с Alice и рекурсивно находит всех сотрудников, которые ей подчиняются, напрямую или косвенно.
maxDepth, чтобы не словить проблемы с производительностью на глубоко связанных графахЭтап агрегации $graphLookup возвращает результаты в виде вложенной древовидной структуры, которая сохраняет иерархические отношения между связанными документами.
Новый — ещё не проверен сообществом
Вы