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
答
我可能会利用这一点避免计算每名员工由项目使用的技术数量:
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://stackoverflow.com/questions/14657265/finding-nodes-that-have-all-common-intermediaries/14662744#14662744但现在我看到,这一个更有效率,谢谢 – Luanne 2013-04-09 07:20:15
大,谢谢!尽管在where子句中有一个额外的圆括号。除此之外,太棒了!顺便说一句,不得不升级neoclipse为了使用和在哪里,我有一个版本从2012年。 – olemartin 2013-04-08 11:47:05
对不起,我已经纠正它。 – Luanne 2013-04-08 11:50:51