2014-11-22 77 views
1

假设我有这个图中的Neo4j:返回一个结果每人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属性Result),导致每个人?

如果我做

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

我只得到(a)-->(r1),符合市场预期,但我想(a)-->(r1)(b)-->(r3 or r4)

有关如何实现此目的的任何提示?提前致谢。

回答

4

可以在暗号使用聚合函数:

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

然而,这不会为没有一个结果关系人返回一行。使用OPTIONAL MATCH可以帮助解决这个问题。

+0

太棒了 - 这正是我想要的。非常感谢! – Sebastian 2014-11-24 12:47:14