在neo4j中每人返回一个结果

时间:2014-11-22 18:40:54

标签: neo4j cypher graph-databases

假设我在neo4j中有这个图:

CREATE (a:Person {name: "Person A"})
CREATE (b:Person {name: "Person B"})
CREATE (r1:TestA {result: 1})
CREATE (r2:TestA {result: 2})
CREATE (r3:TestA {result: 3})
CREATE (r4:TestA {result: 3})
CREATE (a)-[:RESULT]->(r1)
CREATE (a)-[:RESULT]->(r2)
CREATE (b)-[:RESULT]->(r3)
CREATE (b)-[:RESULT]->(r4);`

我如何仅为每个人返回最佳(具有最低result属性的结果)结果?

如果我这样做

`MATCH (p:Person)-->(t:TestA) RETURN p, t ORDER BY t.result LIMIT 1;`

我只按预期获得(a)-->(r1),但我希望获得(a)-->(r1)(b)-->(r3 or r4)

有关如何实现这一目标的任何提示?提前谢谢。

1 个答案:

答案 0 :(得分:4)

您可以在cypher中使用聚合函数:

MATCH (p:Person)-[:RESULT]->(t) RETURN p, min(t.result)

但是,对于没有RESULT关系的人,这不会返回一行。使用OPTIONAL MATCH可以提供帮助。

相关问题