neo4j有两列不同

时间:2014-06-05 18:57:52

标签: neo4j cypher

如何在Neo4j中使用cypher返回两个不同的列?我得到的问题是:

MATCH (a:Person)-[r:WorksFOR]->(b:Boss), (c:Boss)<-[r2:WorksFOR]-(d:Person)
WHERE  b.sex = c.sex
RETURN a,  d;

它返回:

a              d
John           Will
Will           John

我想摆脱其中一个专栏。

1 个答案:

答案 0 :(得分:2)

OP需要重新提出问题,以澄清OP希望摆脱其中一行。

这是一个查询:

MATCH (a:Person)-[r:WorksFOR]->(b:Boss), (c:Boss)<-[r2:WorksFOR]-(d:Person)
WHERE  b.name < c.name AND 
       b.sex = c.sex AND
       b <> c
RETURN a,  d;

您的查询问题是b和c可以匹配任何Boss。为了强制他们在一个订单中匹配,我添加了b.name < c.name。顺序并不重要,这只是强制它匹配一种方式,而不是另一种方式。我已添加b <> c,因为你必须处理他们为同一个老板工作的情况,我认为你不想这样做。

一旦你添加了订单,匹配(b和c)的老板只能以一种方式发生,而不是另一种方式,所以你的第二行结果会被淘汰。