防止neo4j中出现无限循环

Jos*_*osh 1 neo4j

我正在学习neo4j,并且正在制作类似于组织层次结构的东西,其中一个人有一个经理,他有一个经理,他有一个经理等等.

起初我使用了assumptoin,公司的所有者没有经理,并且我的需求正在努力向所有者展示自己和管理层.

为了解决这个问题,我使用了以下查询,它可以满足我的简单需求.

MATCH(baseEmployee:Employee)-[:MANAGEDBY*0..]->(manager) 
where baseEmployee.Name = 'Josh'
RETURN manager.Name;
Run Code Online (Sandbox Code Playgroud)

但如果老板让经理自言自拔,会发生什么.根据我的理解,这将导致无限循环.

如果manager = currentEmployee,我如何阻止匹配跟随MANAGEDBY路径?

Ste*_*ter 7

这不会导致无限循环.你必须意识到一个非常重要的路径概念 - 这就是你对这个MATCH陈述的规定:

路径可能包含循环(也称为多次相同的节点),但它永远不会使用相同的关系两次.因此,即使老板的经理是他自己,这也不会导致无限循环.

  • 正确.[neo4j手册](http://docs.neo4j.org/chunked/stable/cypherdoc-uniqueness.html)指出:`在模式匹配时,Cypher确保不包含多次发现相同图形关系的匹配.单一模式.`. (2认同)