У меня есть следующая схема в MongoDB, где коллекции являются иерархическими и имеют структуру графа:
A -> B -> C -> D -> E
(коллекция A имеет поле со ссылкой (или списком ссылок) на одну или несколько записей в коллекциях B и т. Д.)
Если мне нужно выполнить объединение всех коллекций - при применении некоторых фильтров к коллекции A - я могу сделать запрос агрегации для коллекции A с последовательными $lookup
s и $unwind
s, потому что всегда есть прямые ссылки от А до Е.
Однако, поскольку количество ссылок из коллекции C в коллекцию D может быть очень большим (порядка тысяч), имеет смысл иметь только (одно) поле ссылки из D в C вместо списка ссылок от C до D. В этом случае граф становится:
A -> B -> C <- D -> E
Могу ли я сделать один запрос к коллекции A и присоединиться ко всем коллекциям до E? Есть ли у MongoDB какой-либо способ выполнить обратный поиск (чтобы получить все записи из коллекции D, связанной с коллекцией C)?