如何*不*返回在neo4J中将节点链接到自身的关系

时间:2015-10-22 16:10:03

标签: neo4j

在我使用的数据库中,节点通常与自身有多个关系,这使得生成的图形非常混乱。这是一个演示文稿,我们如何构建一个Cypher查询,返回自引用关系

我试过了

match p=((n:actor) -[*1..3]-> (nd:movie)) where n.name='Craig' and nd.name='Pride_and_prejudice' and not (n)-[]->(n) return p

没有给出理想的结果。

1 个答案:

答案 0 :(得分:1)

如果从Actor到自身有很多关系,那么可变长度路径查询可能并不理想。它将始终包含自我引用关系,这会限制性能并产生太多结果。一种解决方案是明确MATCH第一步并筛选标签:

MATCH p=( (n:actor)-[r1]-(n1)-[*0..2]->(nd:Movie) ) 
WHERE NOT n1:actor
RETURN ...

*0..2关系会捕获n1Movie的情况。

或者,您可以按照此处所述过滤属性的可变长度路径:http://neo4j.com/docs/stable/query-match.html#match-match-with-properties-on-a-variable-length-path