Neo4j Cypher查询只返回数据

Neo4j Cypher查询只返回数据,neo4j,cypher,Neo4j,Cypher,给定此图: 我试图返回所有在同一个班级里影响哲学家的哲学家。首先,我将显示运行良好的查询。问题查询在文章的底部 这是上面链接中的默认查询。我的目的是证明数据是存在的。也就是说,亚里士多德和柏拉图都有学校类型的班级“运动” MATCH p1:Philosopher-[:MEMBER_OF]->s1:School-[:TYPE_OF]->st1:SchoolType-[:SUBCLASS_OF]->stc1:SchoolTypeClass WHERE stc1.name

给定此图:

我试图返回所有在同一个班级里影响哲学家的哲学家。首先,我将显示运行良好的查询。问题查询在文章的底部

这是上面链接中的默认查询。我的目的是证明数据是存在的。也就是说,亚里士多德和柏拉图都有学校类型的班级“运动”

MATCH p1:Philosopher-[:MEMBER_OF]->s1:School-[:TYPE_OF]->st1:SchoolType-[:SUBCLASS_OF]->stc1:SchoolTypeClass
   WHERE  stc1.name = 'movement'
   RETURN p1.name as p1Name, s1.name as s1Name, st1.name as st1Name, stc1.name as stc1Name
这是一个运行良好的查询。这与不起作用的查询非常相似。它展示了影响同一学校类型而不是同一班级的哲学家

MATCH st2:SchoolType<-[:TYPE_OF]-s2:School<-[:MEMBER_OF]-p2:Philosopher<-[:INFLUENCES]-p1:Philosopher-[:MEMBER_OF]->s1:School-[:TYPE_OF]->st1:SchoolType
   WHERE  st2 = st1
   RETURN p1.name as p1Name, s1.name as s1Name, st1.name as st1Name, p2.name as p2Name, s2.name as s2Name, st2.name as st2Name

MATCH st2:SchoolType同一个节点不能在同一个匹配(stc1/2)中有两次名称不同的节点

MATCH p=s2:Schoolst1:SchoolType-[:SUBCLASS\u OF]->stc:SchoolType类

其中(stc)我将其标记为答案,因为它返回正确的结果。但是,您“不能在同一个匹配中两次使用不同名称的相同节点”这一点是不正确的。我在我的帖子的第二个查询中这样做,在这里我测试节点是否与其中的st2=st1相等。
MATCH stc2:SchoolTypeClass<-[:SUBCLASS_OF]-st2:SchoolType<-[:TYPE_OF]-s2:School<-[:MEMBER_OF]-p2:Philosopher<-[:INFLUENCES]-p1:Philosopher-[:MEMBER_OF]->s1:School-[:TYPE_OF]->st1:SchoolType-[:SUBCLASS_OF]->stc1:SchoolTypeClass
   WHERE stc1 = stc2
   RETURN p1.name as p1Name, s1.name as s1Name, st1.name as st1Name, stc1.name as stc1Name, p2.name as p2Name, s2.name as s2Name, st2.name as st2Name, stc2.name as stc2Name
MATCH p=s2:School<-[:MEMBER_OF]-p2:Philosopher
        <-[:INFLUENCES]-p1:Philosopher-[:MEMBER_OF]->s1:School
        -[:TYPE_OF]->st1:SchoolType-[:SUBCLASS_OF]->stc:SchoolTypeClass 
WHERE (stc)<-[:SUBCLASS_OF]-(:SchoolType)<-[:TYPE_OF]-s2 
RETURN p1.name AS p1Name, s1.name AS s1Name, st1.name AS st1Name, 
       stc.name AS stcName, p2.name AS p2Name, s2.name AS s2Name, p