Neo4J:查询节点,其中任何节点对通过一定数量的不同关系连接?

时间:2014-04-21 19:05:39

标签: neo4j cypher subgraph

如何构建一个Neo4J查询:

1)将返回通过一定数量的不同关系连接任何节点对的所有节点?例如,通过2,3或5种不同关系连接的节点? 因此,不是返回具有未知关系数的连接节点的查询:

MATCH (n)-[r]->(m) RETURN n, r, m;

在一般情况下,如何通过n&gt;查找任何一对节点连接的子图。 K,n = L或n < M关系?

1 个答案:

答案 0 :(得分:1)

[增订]

要查找通过正好3个关系的路径连接的节点:

MATCH (n)-[r*3]->(m) RETURN n, r, m;

查找由[2..5]范围内的关系组成的路径连接的节点:

MATCH (n)-[r*2..5]->(m) RETURN n, r, m;

要查找通过最多5个关系的路径连接的节点(1的下限避免了没有关系的情况,即n与m相同):

MATCH (n)-[r*1..5]->(m) RETURN n, r, m;

要查找通过至少2个关系的路径连接的节点:

MATCH (n)-[r*2..]->(m) RETURN n, r, m;

通过比如3个关系查找直接连接的节点对:

MATCH (n)-[r]->(m)
WITH n, m, COLLECT(r) AS rels
WHERE SIZE(rels) = 3
RETURN n, rels, m;