Фон
У меня есть база данных mongodb с документами, содержащими заголовок и список заголовков других документов, с которыми он связан.Этот список других заголовков содержит заголовки, которые еще не существуют в базе данных.Чтобы получить какую-то рекомендацию и найти равенство, мне нужно знать, насколько «далеки» два документа друг от друга и, в особенности, как я могу перейти от одного документа к другому.
В идеале я хотел бы найти решениедля которого мне не нужно знать всю базу данных в моей программе, что сделало бы эту проблему тривиальной.
![image](https://i.imgur.com/nEbzfJ2.png)
Что я пробовал
Я пытался использовать $graphLookup
в агрегации, но я чувствую, что он не сможет предоставить мне универсальное решение для этого.Используя $ graphLookup, я смог получить «заполненный» элемент A и все связанные с ним элементы (B, D), но результат был очень грубым и выглядел очень грубо.
Ожидаемый результат
Я хотел бы знать все возможные пути (возможно, с максимальной глубиной) от одного элемента к другому.
На основе изображения выше, для запроса "A -> B"
Я бы хотелчтобы получить список "A, D, B"
и "A, B"
.
Для "A -> G"
Я хотел бы получить "A, B, F, G"
, "A, B, G"
и "A, D, B, G"
.
К сожалению, яУ меня много элементов (тысячи).Есть ли какой-нибудь умный запрос, который я могу использовать, чтобы получить точный результат, используя только запрос?Или, по крайней мере, какой-нибудь умный запрос фильтра, чтобы получить только подмножество всех соответствующих документов, которые я могу затем объединить с теорией графов в python или node.js?