2016-09-23 6 views
0

Ich arbeite an einem kleinen Projekt, wo ich zwischen Nutzern wie Twitter folgen muss. Ich versuche eine Abfrage zu erstellen, die die Nachfolger eines bestimmten Knotens zurückgibt, nennen wir es "X" -Knoten. Die Abfrage gibt also die Nachfolger von "X" und die Anzahl der Nachfolger der Nachfolger von "X" und die Anzahl der Knoten, denen die Nachfolger von "X" folgen, einschließlich "X" in dieser Zählung zurück. Entschuldigung für das Wortspiel. Nehmen wir ein Beispiel mit Bildern sehen:Neo4J Cypher - Grafische Beziehungen von abgeglichenen Knoten

Ich habe die folgenden Knoten:

Nodes

Und ich will alle Anhänger von Knoten 2 und die Zählungen wissen, ich vor seiner Anhänger erwähnt. Ich habe die nächste Abfrage:

MATCH (:User{id:2})<-[:Follows]-(followers) 
OPTIONAL MATCH (followers)-[r1:Follows]->(:User) 
OPTIONAL MATCH (:User)-[r2:Follows]->(followers) 
RETURN followers.id, count(r1) AS Follows, count(r2) AS Following; 

aber es funktioniert nicht in zwei Werte: Die Anzahl der Knoten der Knoten 1 folgt und die Anzahl der Knoten, die Knoten 6 folgt: Hier enter image description here

Sie können sehen, alle Beziehungen: enter image description here

Jede Hilfe wird geschätzt. Vielen Dank.

Antwort

2

Ich denke, dass beide OPTIONAL MATCHES Rücken an Rücken führen zu einigen doppelten Ergebnissen (beachten Sie die Ausgabe in jeder Phase mit den beteiligten Variablen ... mehrere Zeilen Übereinstimmungen für die jeder Follower folgt mit einem Kreuzprodukt für alle die Reihe stimmt überein, wer jedem Follower folgt).

Während Sie dieses Problem beheben könnte, indem Sie Ihre Daten Montag (immer die Zählung) nach jedem OPTIONAL MATCH, ein besserer Ansatz ist von der Verwendung OPTIONAL STREICHHöLZER wechseln und statt dem die Anzahl der Beziehungen direkt mit der Größe Funktion erhalten:

MATCH (:User{id:2})<-[:Follows]-(followers) 
RETURN followers.id, SIZE((followers)-[:Follows]->()) AS Follows, SIZE(()-[:Follows]->(followers)) AS Following 
+0

Oh mein Gott, danke! Es hat funktioniert wie ein Zauber! – Guolf3377

Verwandte Themen