在我使用的数据库中,节点通常与自身有多个关系,这使得生成的图形非常混乱。这是一个演示文稿,我们如何构建一个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
没有给出理想的结果。
答案 0 :(得分:1)
如果从Actor
到自身有很多关系,那么可变长度路径查询可能并不理想。它将始终包含自我引用关系,这会限制性能并产生太多结果。一种解决方案是明确MATCH
第一步并筛选标签:
MATCH p=( (n:actor)-[r1]-(n1)-[*0..2]->(nd:Movie) )
WHERE NOT n1:actor
RETURN ...
*0..2
关系会捕获n1
为Movie
的情况。
或者,您可以按照此处所述过滤属性的可变长度路径:http://neo4j.com/docs/stable/query-match.html#match-match-with-properties-on-a-variable-length-path