0

我需要帮助来限制节点以在 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 节点显示来自 B 的 1 级层次结构,同样的 2 级层次结构我想显示 A、B, C & D 因为它应该从 B 节点显示 2 级向上和 2 级向下。

4

1 回答 1

2

您可以通过将最大深度作为第二个参数传递给 FollowRecursive 函数来限制深度:

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

请不要在 foreach 中开始一条不知道外部函数最大深度的新路径。

有关此用例的更详细讨论可以在 Cayley 官方论坛上的“交叉帖子”中找到: https ://discourse.cayley.io/t/cayley-0-7-0-depth-function-issue /1066

于 2018-02-05T11:09:26.717 回答