2017-10-20 208 views
1

所以我有简单的图。最左边的节点是“团队”类。第二个最正确的(灰色)是'体育'类节点。OrientDB深度遍历,直到具体的类

SimpleGraph

我需要找到当我只有一个团队节点此查询的工作内容涉及特定运动

所有团队:

MATCH {class:Team, as: team} --> {class: Sport, maxDepth: 10} 
RETURN team.Abbreviation 

后我添加的第二个节点'团队'类我开始得到这个错误:

java.lang.RuntimeException: Invalid pattern to match! 

如果我删除'maxDepth'它可以工作,但不会返回任何内容

我应该怎么做才能使其工作?

回答

1

这绝对是一个错误,我正在检查它。 作为一个快速的变通,你可以在模式中添加一个条件的第一个元素,让你强制执行,从那里开始:

MATCH {class:Team, as: team, where:(true)} --> {class: Sport, maxDepth: 10} 
RETURN team.Abbreviation 

更妙的是,从右手取下“下课” :

MATCH {class:Team, as: team} --> {where: (@class = 'Sport'), maxDepth: 10} 
RETURN team.Abbreviation 

这里的问题是,该模式是在错误的方向进行评估(从右到左),与上述工作,在你身边,迫使OrientDB来评估它从左至右

+0

谢谢很多!它现在的作品:) – Szer

+1

好消息,我只是推动了2.2.x分支的修复,现在原来的查询工作正常。该修补程序将以2.2.30发布 –