2016-04-22 78 views
1

如何返回节点我有Neo4j的数据库中包含了一组节点和关系,该节点具有属性名称并有不同类型的关系。间接关系相互

,如果我有名字[“A”,“C”,“E”,“Q”,“Z”]的名单,我怎么能找到这些节点之间的所有直接和间接的路径?就像A通过一个或多个可能在列表中并且可能不在列表中的节点连接到Z一样。

这个暗号查询仅返回其直接连接

MATCH (a)-[r]-(b) 
WHERE a.name IN ["A","C","E","Q","Z"] AND 
     b.name IN ["A","C","E","Q","Z"] 
RETURN a,b,r 

与该查询返回不相关的节点

MATCH (a)-[r*0..2]-(b) 
WHERE a.name IN ["A","C","E","Q","Z"] AND 
     b.name IN ["A","C","E","Q","Z"] 
RETURN a,b,r 

回答

2

这些节点我想你的意思:

MATCH (a)-[r*2]-(b) WHERE ... 
      ^note 

0..2意味着“零,一两个关系”。如果包括0你会得到每一个的WHERE条款相匹配的节点,如果你有1“只有直接地连接这些节点”。

取而代之,上述匹配“恰好两个”,即具有中间的单个其他节点。对于“两个或更多”,可以使用2..