我在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
是我发现执行此操作的唯一功能,但是我认为我不能以这种方式使用它。关于如何做到这一点的任何想法?
答案 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。