在neo4j中每人返回一个结果

在neo4j中每人返回一个结果,neo4j,cypher,graph-databases,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)

假设我在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);`
我如何只返回最好的结果,而每个人的结果属性结果最低

如果我这样做

`MATCH (p:Person)-->(t:TestA) RETURN p, t ORDER BY t.result LIMIT 1;`
我只得到a->r1,正如预期的那样,但我想得到a->r1和b->r3或r4


关于如何实现这一点有什么提示吗?提前感谢。

您可以在cypher中使用聚合功能:

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

但是,这不会为没有结果关系的人员返回行。使用可选匹配有助于此。

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

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

但是,这不会为没有结果关系的人员返回行。使用可选匹配可以帮助解决这个问题。

太好了-这正是我想要的。谢谢!太好了,这正是我想要的。谢谢!