Cayley: Как поставить предел / глубину, чтобы показать иерархию графиков в Cayley?

Мне нужна помощь, чтобы ограничить узлы, чтобы показать иерархию графов в Cayley. Как и в OrientDB, у нас есть функция глубины, чтобы ограничить иерархию любым уровнем до того же уровня вниз.

Пример: у меня есть иерархия ниже:

A DependsOn B    
B RunsOn C    
C DependsOn D    
D ConnectedTo E    

Теперь для приведенного выше примера я написал следующий запрос, чтобы показать иерархию графиков.

var path = g.M().Both();    
g.V("B").FollowRecursive(path).ForEach( function(v) {  
    g.V(v.id).OutPredicates().ForEach( function(r){    
        g.V(v.id).Out().ForEach(function(t){    
            var node = {    
                source: v.id,    
                relation : r.id    
                target: t.id    
            }    
            g.Emit(node)
        })
    }
})

Поэтому, когда я передаю B в запрос, он возвращает мне полную иерархию, но я хочу, чтобы только A,B & C узлы отображались для 1-уровневой иерархии из B, то же самое для 2-уровневой иерархии, которую я хочу показать A,B,C & D должен показывать 2 уровня вверх и 2 уровня вниз от узла B.

1 ответ

Вы можете ограничить глубину, передав максимальную глубину в качестве второго параметра функции FollowRecursive:

g.V("B").FollowRecursive(path,2 )

Обратите внимание, что вы начинаете новый путь в foreach, который не знает о максимальной глубине внешней функции.

Более подробное обсуждение этого варианта использования можно найти в перекрестном сообщении на официальном форуме Cayley: https://discourse.cayley.io/t/cayley-0-7-0-depth-function-issue/1066

Другие вопросы по тегам