浏览Neo4j中的列表

时间:2019-03-18 19:23:26

标签: neo4j cypher

我在neo4j中遇到列表问题。我需要遍历一个列表,并将每个元素与另一个节点的属性进行比较。我尝试过这样的事情

MATCH (C:Courses),(S:Student) 
WHERE
  C.courseid = "8" AND
  S.userid = FOREACH(l IN SPLIT(C.students,",")
    CREATE (C)<-[E:enrolled]-(S) 
RETURN E

其中C.students是一串用“,”分隔的值。 FOREACH是我发现执行此操作的唯一功能,但是我认为我不能以这种方式使用它。关于如何做到这一点的任何想法?

1 个答案:

答案 0 :(得分:1)

此查询应达到您的预期目的

MATCH (c:Courses)
WHERE c.courseid = '8'
MATCH (s:Student)
WHERE s.userid IN SPLIT(c.students, ',')
CREATE (c)<-[e:enrolled]-(s)
RETURN e

如果您有大量的课程或学生,那么还应该为:Courses(courseid)和/或:Student(userid)创建indexes