我正在尝试获取连接节点。最终节点应具有pobj的类型。如何用最短路径指定它?
match(c:fdnode{name:'flights'})
match(d:fdnode)
match p = shortestPath((c)-[*..15]-(e)-[r]-(d))
where d.name = '700' and type(r) = 'pobj'
RETURN nodes(p)
如果我删除r,代码将返回所需的输出。但是我需要类型(r)。
pobj仅适用于这种情况。我有多个遍历条件。
答案 0 :(得分:0)
以下查询可能会做您想要的。它返回满足以下条件的最短无向路径(最大长度为15)中的节点:
name
值为'flights'。name
值为'700'。最后一个关系的类型为pobj
。
MATCH p = shortestPath((c:fdnode)-[*..15]-(d:fdnode))
WHERE c.name = 'flights' AND d.name = '700' AND TYPE(LAST(RELATIONSHIPS(p))) = 'pobj'
RETURN NODES(p);
注意:匹配的路径将是“无向的”,因为此查询通过未在MATCH
模式中指定任何方向性来模仿您的查询。因此,每个匹配的关系都可以在任一方向上进行。如果这不是您想要的,则需要在模式中明确指定方向性。
答案 1 :(得分:0)
弄清楚了。这行得通。
match (a:iknode)-[*..10]->(b:iknode)-[r]->(c:iknode) where type(r) = 'pobj' and a.name = 'flights' return c
这也有效:
MATCH p = ((c:fdnode)-[*..4]->(d:fdnode))
WHERE c.name = 'flights' AND TYPE(LAST(RELATIONSHIPS(p))) = 'pobj'
RETURN NODES(p) order by length(p) ;