Cypher查询匹配所有路径

问题描述:

我有一个像“项目”,“员工”和“技术”节点的图形。项目与技术之间以及员工与技术之间存在关系。Cypher查询匹配所有路径

我想找到知道项目使用的所有技术的员工。我cyper查询看起来是这样的:

start project=node:project(name = "Project1") 
match technology <-[:USED]- project , employee -[:KNOWS]-> technology 
return employee 

当运行此查询我得到了解工程使用的一种技术,并且希望那些知道该项目使用的所有技术员工的所有员工。这是可能的密码?

你可以尝试这样的:

start project=node:project(name = "Project1") 
match employee -[:KNOWS]-> technology <-[:USED]- project 
with count(technology) as knownTech, employee, project 
where length(()<-[:USED]-project)=knownTech 
return employee 

Finding nodes that have all common intermediaries

+0

大,谢谢!尽管在where子句中有一个额外的圆括号。除此之外,太棒了!顺便说一句,不得不升级neoclipse为了使用和在哪里,我有一个版本从2012年。 – olemartin 2013-04-08 11:47:05

+0

对不起,我已经纠正它。 – Luanne 2013-04-08 11:50:51

我可能会利用这一点避免计算每名员工由项目使用的技术数量:

start project=node:project(name = "Project1") 
match technology <-[:USED]- project 
with count(technology) as projectTech, project 
match employee -[:KNOWS]-> technology <-[:USED]- project 
with count(technology) as knownTech, projectTech, employee 
where projectTech=knownTech 
return employee 
+0

这很有道理,没有想到它。我重新写了一些我的查询后http://*.com/questions/14657265/finding-nodes-that-have-all-common-intermediaries/14662744#14662744但现在我看到,这一个更有效率,谢谢 – Luanne 2013-04-09 07:20:15