2017-05-03 6 views
4

Angenommen, ich habe Diagrammbeziehungen definiert als A-> B, A-> D, C-> A, B-> C, B-> D. Ich brauche die folgenden Subgraphen in Neo4j zu bekommen -Neo4j bekomme Kanten zwischen Knoten ersten Grades

  1. Erhalten Sie alle 1.Grad Verbindungen (indegree oder outdegree) eines Knotens, dh für den Knoten A, wäre es B, C, D
  2. Holen Sie sich alle Kanten zwischen diese Knoten ersten Grades. Da B, C, D 1. Grad-Verbindungen, wäre Kanten B-> C, B-> D

Für den ersten Teil habe ich die folgende Abfrage -

MATCH (s:Node)->(d:Node) 
WHERE s.name = 'A' OR d.name = 'A' 

Ich bin nicht in der Lage, den zweiten Teil der Daten in derselben Abfrage zu erhalten. Muss ich alle Knoten durchlaufen?

Antwort

3

Dies ist ein einfaches Muster, das sagt, dass Sie den Weg vom Knoten starten, dann neben sie an den Knoten gehen, dann von denen können Sie zum Starter Knoten zurück:

MATCH (A:Node {name:'A'}) WITH A 
MATCH (A)--(FD1:Node)-[r]-(FD2:Node)--(A) 
    WHERE ID(FD1) > ID(FD2) 
RETURN FD1, r, FD2 

P. S. Und denken Sie daran, dass Sie die Richtung der Beziehung nicht angeben können.

+0

warum die ID (FD1)> ID (F2) -Klausel? –

+0

@YashveerRana Um Duplikate zu entfernen, die aufgrund der Tatsache angezeigt werden, dass die Beziehung nicht gerichtet ist. –

Verwandte Themen