Ich habe ein Diagramm, wo Benutzer einen Beitrag haben können und auch einen Freund, der einen Beitrag haben kann, kann der Freund verfolgt werden oder nicht.
Wie kann ich alle Beiträge vom Benutzer und den Freunden, denen er folgt, abfragen?
Ich versuchte dies:Java Neo4j Cypher oder 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";
aber diese Abfrage gibt Duplikate, können sagen, dass wir unsere Benutzer und einen Freund haben.
die frien haben einen Beitrag und der Benutzer haben zwei, die Abfrage gibt den Freund Beitrag zweimal wie für jede MATCH die Abfrage gibt auch das Ergebnis OPTIONAL MATCH zurück.
weiteren exaplain:
(u:User)-[:POSTED]->(p:Post)
(u:User)-[:FRIEND_OF]->(u2:User)
(u:User)-[:FOLLOWING]->(u2:User)-[:POSTED]->(p2:Post)
das sind die Beziehungen, die, was ich existieren will alle Beiträge ist (Post), die diese Beziehungen ohne Duplikate und vorzugsweise mit einzelner Abfrage erfüllen.
warum unten abstimmen? –