2016-08-01 108 views
0

我有以下關係的(:User)密集的節點:的Neo4j/Cypher支架密集的節點匹配結果排序

(:User)-[:SUBSCRIBED]->(:User) 
(:User)-[:CONNECTED]->(:SocialNetwork) 

如果我執行下面

MATCH (u:User {UserId:id}) 
MATCH (u)-[:SUBSCRIBED]->(s) 
RETURN s 

查詢我得到用戶的用戶最近下令預計。

但隨着更多的匹配模式剎車同一查詢此訂貨

MATCH (u:User {UserId:id}) 
MATCH (u)-[:SUBSCRIBED]->(s) 
OPTIONAL MATCH (s)-[:CONNECTED]->(sn) 
RETURN s, COUNT(sn.FriendCount) 

有人能解釋爲什麼排序近期不會在第二個例子中工作。

回答

1

由於您沒有ORDER子句,因此無法保證您的查詢中的訂單,運行相同的查詢1000次,並且我確信訂單會在某個時間點發生變化。

您應該在查詢的末尾:

MATCH (u:User {UserId:id}) 
MATCH (u)-[:SUBSCRIBED]->(s) 
OPTIONAL MATCH (s)-[:CONNECTED]->(sn) 
RETURN s, COUNT(sn.FriendCount) 
ORDER BY s.time // ? property representing the time 
+0

第一次查詢總是由近期密集節點 – drgraduss

+1

即使你沒有排序的保證密集節點沒有明確的'ORDER'條款有序 –