我需要帮助限制节点,以显示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级。
发布于 2018-02-05 19:09:27
您可以通过将最大深度作为第二个参数传递给FollowRecursive函数来限制深度:
g.V("B").FollowRecursive(path,2 )请注意,您在foreach中开始了一条新路径,它不知道外部函数中的最大深度。
关于这个用例的更详细的讨论可以在官方Cayley论坛上的“交叉帖子”中找到:https://discourse.cayley.io/t/cayley-0-7-0-depth-function-issue/1066
https://stackoverflow.com/questions/47180376
复制相似问题