我有一個圖表用戶可以有一個職位,也可以有一個朋友有一個職位,朋友可以遵循或不。
我如何查詢用戶和他所關注的朋友的所有帖子?
我嘗試這樣做:Java Neo4j Cypher或Match
" MATCH (u1:User)-[:POSTED]->(p1:Post)"
+ " WHERE u1.username =~ '"+user+"'"
+ " OPTIONAL MATCH (u3:User)-[:FOLLOWING]->(u2:User)-[:POSTED]->(p2:Post),"
+ " (u3:User)-[:FRIEND_OF]->(u2:User)"
+ " WHERE u3.username =~ '"+user+"' return u1.username, u1.name,"
+ "p1 ,u2.username, u2.name , p2";
但這查詢返回重複的,可以說,我們有我們的用戶和朋友。
朋友有一個帖子,用戶有兩個,查詢返回朋友帖子兩次,每個MATCH查詢返回可選匹配結果。
進一步exaplain:
(u:User)-[:POSTED]->(p:Post)
(u:User)-[:FRIEND_OF]->(u2:User)
(u:User)-[:FOLLOWING]->(u2:User)-[:POSTED]->(p2:Post)
除此之外不存在我想是所有帖子的關係:滿足這些關係沒有重複,最好用單查詢(POST)。
爲什麼要投票? –