image of the problem 我在图像中有以下情形:红色节点为主题,黄色节点为课程名称。我需要找到属于课程CS201的最后一个主题。在此示例中,这应该是主题“ Array”。我无法将其转换为密码查询语言。我已经尝试过了:
MATCH (n:course)-[:isPartOf]->(x:label) where not x.name contains 'CS201' return n
这应该给我主题“指针”,因为它不包含CS201,然后我以为我会退后一步到达主题“数组”,但是它不起作用。
答案 0 :(得分:0)
我认为您混淆了方向和名称。
MATCH (course:course)<-[:isPartOf]-(topic:label)<-[:hasPreq]-(prevTopic:label)
where course.name contains 'CS201'
return topic, prevTopic
为什么您有重复的课程条目? 您可能没有在创建数据时使用MERGE。
答案 1 :(得分:0)
保留
使用此密码:
MATCH (c:course {name: 'CS201'})<-[:isPartOf]-(t:topic)
OPTIONAL MATCH path=((t)-[:next*]->(:topic)-[:isPartOf]->(c))
RETURN t, count(relationships(path)) AS count_rels
ORDER BY count_rels
但是它将返回数组和指针为secondTopic
,就像@Michael Hunger在他的回答中说的那样,您有重复的CS201
课程,请尝试独特的约束,read docs:
CREATE CONSTRAINT ON (course:course) ASSERT course.name IS UNIQUE