我有下图:
V1
/ | \
p1 p2 p3
如果我有与GREMLIN中的条件匹配的p1和p3顶点,我想找到父顶点(V1)。我有大约25个单亲节点的子节点。而且我需要找到具有符合条件的任何子顶点的父对象。
例如:如果P1,P2,P3顶点具有以下属性-名称,值。我需要找到父顶点,例如:
SELECT
V1
WHERE
P1.name = 'a' and P1.value = 'b'
AND P3.name = 'x' and P3.value = 'y'
(或者)
SELECT
V1
WHERE
P2.name = 'p' and P2.value = 'q'
AND P3.name = 'x' and P3.value = 'y'
解决此问题的最佳方法是势在必行(任意选择其中一个子顶点作为开始)。
这是这种查询的最简单形式:
g.V().has('Child','name','p1').in('HAS').where(out('HAS').has('name','p2'))
该查询的结果将为V1
。
谢谢泰勒对班次的回应。是的,我目前正在以完全相同的方式进行操作。但是只是想一下,如果从每个子顶点到父顶点和来回顶点之间来回移动的代价昂贵,则需要遍历。
命令式方法实际上非常有效,因为您要触摸尽可能少的图形中的组件。一旦加载了数据以准确查看性能特征,就可以对Neptune的/ gremlin / profile API端点运行此命令,这将是很好的。