参数由上下文,代码和值(EX:CREATE VERTEX Parameter SET context='val1', code='val2', value='val3'
)表示。
ThirdParty由类型(例如:CREATE VERTEX ThirdParty SET type=7
)
从顶点#40:0开始,我想检索附加到此节点的给定参数的值(例如,带有context ='val1'和code ='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可以有多个参数,具有不同的上下文和代码,我找不到如何修改而< / strong>参与查询以与给定参数进行比较(context ='val1'和code ='val2')。
答案 0 :(得分:1)
查询应该是这个:
SELECT parameter.value FROM (
MATCH
{class:ThirdParty, where: (type = 7)}
.in('parent_of')
{
while: (
not (
out('owns').context contains "val1"
AND
out('owns').code contains "val2"
)
),
where: (
out('owns').context contains "val1"
AND
out('owns').code contains "val2"
)
}.out('owns')
{as: parameter, where:(code = "val2" and context = "val1")}
RETURN parameter
)
BUT
您不能将“context”用作属性名称,因为它引用了查询上下文而您没有预期的结果
我在2.2.19上发现了一个破坏此查询的错误,我只修复了它并推送了2.2.x分支上的修复程序。修复程序将在2.2.20发布。在此期间,您可以在几个小时内找到此处的快照https://oss.sonatype.org/content/repositories/snapshots/com/orientechnologies/orientdb-community/2.2.20-SNAPSHOT/