当具体节点与子路径中的每个节点之间存在连接时,获取子路径

时间:2014-05-18 12:17:06

标签: neo4j cypher

我根据日期在链中订购了事件。见example。我想获得在特定日期发生的子路径。让我们说日期已知。我写了这个:

START d=node(73)  // date node
MATCH node=d-[:WHEN]->(l)<-[:FOLLOWS*0..]-(f)<-[:WHEN]-d RETURN f,l;

它似乎或多或少都有效。但我有两个问题:

  • 结果返回两个项目。解析时有一些问题。我可以将这两个值统一到整个路径中吗?
  • 我不太确定订单。序列l中的第一个元素是否可能是路径中的最后一个元素?

我认为如果我知道要查找的子路径中的最后一个元素,那么构造路径会更容易。获得属于这个日期的最后一个元素是否可行(这意味着最后一个元素应该属于这个日期,而他旁边应该缺席或属于另一个日期)?

更新:我找到了一种将值合并到收集中的方法:

START d=node(74) 
MATCH node=d-[:WHEN]->(l)<-[:FOLLOWS*0..]-(f)<-[:WHEN]-d WITH [ f,l ] as qwe 
RETURN qwe;

1 个答案:

答案 0 :(得分:1)

如果您对可以做的路径感兴趣:

START d=node(73)  // date node
MATCH (d)-[:WHEN]->(l),(d)-[:WHEN]->(f), 
      path=(l)<-[:FOLLOWS*0..]-(f)
RETURN path;

or 

RETURN nodes(path)

关于订单,当您提供方向时,这是在您的路径中订购节点的顺序。