Cypher:在它们之间具有另一种关系的节点之间返回关系

时间:2016-12-24 22:43:41

标签: neo4j cypher

我是Neo4j Community Edition 3.1.0的新用户,我正在尝试创建一个有效的Cypher查询,该查询只匹配节点之间某种类型(类型A)的关系,如果这些节点当前有一个(类型B)他们之间的关系。例如,我现在所拥有的是:

MATCH (n)-[:B]-(m)
WITH n,m
MATCH (n)-[r:A]-(m)
RETURN r

在我的图表中,((类型B)关系明显多于(类型A),所以我担心我的查询效率非常低,因为它首先匹配所有(类型B)关系。我的查询是否正确;如果是这样,我怎样才能提高效率呢?

1 个答案:

答案 0 :(得分:0)

我认为最好只有一个查询:

MATCH (n)-[r:A]-(m)-[:B]-(n)
return r

通过这种方式,查询计划程序可以在关系B之前考虑关系A.