Neo4J:避免重复节点

时间:2014-09-15 01:56:27

标签: neo4j nodes duplication

我有一个学生模型和他们协助的课程。所有学生都有一个groupNumber。

因此,当我想让所有帮助同一课程但来自不同组的学生时,我会这样做:

MATCH (s1:Student)-[:Assisted]-(c:Course), (s2:Student)-[:Assisted]-(c)
WHERE s1.groupNumber <> s2.groupNumber
RETURN s1, s2

但是,这可以告诉我这样的事情:

Paul | Steve
Steve | Paul
Carl |Steve
Steve | Mark

有没有一种简单的方法可以避免重复学生?

1 个答案:

答案 0 :(得分:1)

你几乎拥有它 - 只需添加一个子句:

MATCH (s1:Student)-[:Assisted]-(c:Course), (s2:Student)-[:Assisted]-(c)
WHERE s1.groupNumber <> s2.groupNumber AND
s1.groupNumber < s2.groupNumber
RETURN s1, s2

看起来您的结果重复,因为匹配发生了两次;一次在一个订单中,另一次在另一个订单中。通过说一个groupNumber必须小于另一个,它确保只有一个排序是可能的;例如,Paul | Steve是可能的,但Steve | Paul不是