鉴于此图表: 第三方可能或不拥有参数。orientdb停止遍历一些条件
参数是通过一个上下文,代码和值(:CREATE VERTEX Parameter SET context='val1', code='val2', value='val3'
EX)表示。 ThirdParty由类型表示(例如:CREATE VERTEX ThirdParty SET type=7
)
从顶点#40:0开始,我想检索给定参数的值val2')连接到此节点(节点可以有不同的参数)。如果节点不拥有给定的参数,那么我想逐个遍历该节点的父节点,直到找到给定参数的值。
我尝试使用此查询:
SELECT parameter.value FROM (MATCH {class:ThirdParty,
where: (type = 7)}.in('parent_of')
{while: (out('owns').size() == 0),
where: (out('owns').size() > 0)}.out('owns')
{as: parameter} RETURN parameter)
但问题是,一个ThirdPary可以有多个参数,用不同的背景和代码,我无法找到如何修改而部分在查询中与给定参数(context ='val1'和code ='val2')进行比较。
感谢Luigi的回答!你修正的错误与错误有关:'java.lang.UnsupportedOperationException:Implement SuffixIdentifier!'?因为当我通过删除部分out('owns')来执行查询时,上下文包含来自'while'和'where'子句的“val1”AND',我得到'UnsupportedOperationException' – mabbas
正是我所做的修复解决了这个问题 –
我刚做了一个使用快照的测试,它工作得很好!我只需要将'where:(code =“val2”)''添加到'{as:parameter}'子句中,以检索给定参数的值,否则查询返回连接到节点的所有参数的值。感谢您的帮助!我昨天才开始研究orientdb,而且我已经是一个很棒的粉丝! :) – mabbas