2012-10-30 47 views
4

我有一個簡單的社交網絡圖db模型。用戶可以關注其他用戶併發布帖子。我試圖讓用戶已連同任何人的用戶按照已公佈Neo4j Cypher查詢返回不同的節點集

START a=node:node_auto_index(UserIdentifier = "USER0") 
MATCH (a)-[:POSTED]->(b), (a)-[:FOLLOWS]->(c)-[:POSTED]->(d) 
RETURN b, d; 

它返回兩者的交叉產品發佈的所有帖子的列表,在B中的所有值的元組與d中的所有值一起加入。 (b x d)我只想列出一個簡單的帖子。我該怎麼做呢?我需要做兩個單獨的查詢嗎?

回答

1

,你可以現在就做(恕我直言的更清潔的方式),另一種方法是把可變長度的關係優勢。

START user=node... 
MATCH (user) -[:FOLLOWS*0..1]-> (following) -[:POSTED]-> (post) 
RETURN post 

這種方式的好處是它可以讓你統一你自己的查詢和你的朋友/ followings的查詢。例如。排序,限制,分頁等。