OrientDB深度遍历直到具体class
OrientDB deep traversal until specific class
所以我有简单的图表。最左边的节点是 'Team' class。第二个最右边(灰色的)是 'Sport' class node.
我需要找到与特定运动相关的所有团队
当我只有一个团队节点时,此查询有效:
MATCH {class:Team, as: team} --> {class: Sport, maxDepth: 10}
RETURN team.Abbreviation
添加 'Team' 的第二个节点后 class 我开始收到此错误:
java.lang.RuntimeException: Invalid pattern to match!
如果我删除 'maxDepth' 它有效,但 returns 没有任何作用
我应该怎么做才能让它发挥作用?
这肯定是一个错误,我正在检查它。
作为一种快速解决方法,您可以向模式中的第一个元素添加一个条件,以便强制执行程序从那里开始:
MATCH {class:Team, as: team, where:(true)} --> {class: Sport, maxDepth: 10}
RETURN team.Abbreviation
更好的是,去掉右手的"class":
MATCH {class:Team, as: team} --> {where: (@class = 'Sport'), maxDepth: 10}
RETURN team.Abbreviation
这里的问题是在错误的方向(从右到左)评估模式,通过上述变通方法,您强制 OrientDB 从左到右评估它
所以我有简单的图表。最左边的节点是 'Team' class。第二个最右边(灰色的)是 'Sport' class node.
我需要找到与特定运动相关的所有团队
当我只有一个团队节点时,此查询有效:
MATCH {class:Team, as: team} --> {class: Sport, maxDepth: 10}
RETURN team.Abbreviation
添加 'Team' 的第二个节点后 class 我开始收到此错误:
java.lang.RuntimeException: Invalid pattern to match!
如果我删除 'maxDepth' 它有效,但 returns 没有任何作用
我应该怎么做才能让它发挥作用?
这肯定是一个错误,我正在检查它。 作为一种快速解决方法,您可以向模式中的第一个元素添加一个条件,以便强制执行程序从那里开始:
MATCH {class:Team, as: team, where:(true)} --> {class: Sport, maxDepth: 10}
RETURN team.Abbreviation
更好的是,去掉右手的"class":
MATCH {class:Team, as: team} --> {where: (@class = 'Sport'), maxDepth: 10}
RETURN team.Abbreviation
这里的问题是在错误的方向(从右到左)评估模式,通过上述变通方法,您强制 OrientDB 从左到右评估它