2014-11-22 81 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