我需要帮助来限制节点以显示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和amp;从B显示1级层次结构的C节点,2级层次结构的同一事物我要显示A,B,C& D,因为它应显示B节点2级向上和2级向下。
答案 0 :(得分:1)
您可以通过将max depth作为第二个参数传递给FollowRecursive函数来限制深度:
<Style TargetType="ListView">
<Style.Triggers>
<DataTrigger Binding="{Binding ShowSearchResults}" Value="True">
<Setter Property="ItemsSource" Value="{Binding SearchResults}" />
</DataTrigger>
</Style.Triggers>
</Style>
请注意,您不会在foreach中开始一条新路径,该路径不知道外部函数的最大深度。
关于这个用例的更详细讨论可以在&#39;交叉发布的&#39;在Cayley官方论坛上: https://discourse.cayley.io/t/cayley-0-7-0-depth-function-issue/1066