如果Neo4j具有双向关系,则会将返回的节点加倍

时间:2016-05-26 18:54:12

标签: neo4j cypher

如果我创建两个具有两种关系的节点:

CREATE (ee:Person { name: "Emil"})
CREATE (js:Person { name: "Johan"}),
(ee)-[:KNOWS]->(js),
(js)-[:KNOWS]->(ee)

然后,如果我做

match u return u

在Rows中将有2个节点

但如果我这样做

match u--f return u,f

在Rows中将有4个节点。

如果我不介意方向,我怎么能只返回2个节点? 我只需要回复用户的所有朋友,并且有重复的朋友。

1 个答案:

答案 0 :(得分:0)

使用两种关系

要修复查询(使用您的数据),请使用DISTINCT,如此查询中所示:

MATCH (u)--(f)
RETURN DISTINCT u, f;

使用单一关系

但是你可能首先不应该有2个关系(相反的方向)。如果您只是创建一个

CREATE (ee:Person { name: "Emil"})
CREATE (js:Person { name: "Johan"}),
(ee)-[:KNOWS]->(js);

然后您的原始查询也会返回2行。