【发布时间】:2015-11-06 10:37:15
【问题描述】:
显然,下面的 WHERE 子句似乎不起作用,因为我们的查询中有两个关系(WorksAt 和 ResponsibleFor)。如果只有一种关系,那么这将像魔术一样起作用。在下面的查询中,查询返回科学系的所有课程,但它不会过滤掉不是 Maria Smith 教授的课程。我想做的就是只获得在科学系工作的玛丽亚史密斯教授的课程。
我遇到了 WITH 和 Start 子句,它们似乎是潜在的候选子句,使其可以在将查询的一部分发送到另一部分之前过滤掉它的工作。
http://neo4j.com/docs/stable/query-with.html
但我还没有掌握这个概念。有人要帮忙吗?
MATCH (d:Department)<-[w:WorksAt]-(t:Tutor)-[r:ResponsibleFor]->(c:Courses)
WHERE d.name='Science'
AND t.name='Maria Smith'
return c,r
【问题讨论】:
-
看起来不错。尝试返回 * 而不是 c,r
-
除此之外,您确定所有案例的标签、属性和关系类型都匹配吗?
-
@DaveBennett return * 将带来与 return c,r 相同的结果。我知道,标签、属性和关系类型也在案例上匹配,因为我知道 Neo4j Cypher 查询不仅对查询语法而且对我们输入的值也是区分大小写的
-
对不起,我看错了
标签: neo4j cypher graph-databases