私は、ユーザーが投稿を持つことができ、また投稿を持っている友人を持つことができるというグラフを持っています。
ユーザーと彼がフォローしている友人のすべての投稿をどのようにクエリできますか?
私はこの試みた:Java Neo4j Cypher Or 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";
をしかし、このクエリは、重複を返す私たちは、ユーザとの友人を持って言うことができます。
frienには1つの投稿があり、ユーザーには2つのクエリが返されます。のMATCHのようにクエリは友人の投稿を2回返します。の結果も返します。さらにexaplainへ
:(:ポスト)重複せず、好ましくは単一のクエリとそれらの関係を満たす
(u:User)-[:POSTED]->(p:Post)
(u:User)-[:FRIEND_OF]->(u2:User)
(u:User)-[:FOLLOWING]->(u2:User)-[:POSTED]->(p2:Post)
が、これらは私がしたいことは、すべての投稿で存在する関係です。
なぜ落札ですか? –