2017-08-07 1 views
1

Ich habe eine kleine Datenbank mit drei Knoten, Abraham, Isaac und Jacob erstellt. Abraham ist Isaaks Vater, und Isaak ist Jakobs Vater.Beziehung in Neo4j gezeigt, obwohl es nicht

Jetzt führe ich die folgende Abfrage:

MATCH (a:Person), (i:Person) 
WHERE a.name='Abraham' and i.name='Isaac' 
RETURN a, i 

die Abfrage von der Schnittstelle Neo4j Bahnlauf zeigt die beiden Knoten mit dem Vater Beziehung zwischen ihnen: result shown in the Neo4J web interface

Das ist seltsam, da ich nicht haben hat irgendwelche Beziehungen angefordert. Die JSON-Antwort enthält die Beziehungen auch nicht:

[{ 
    "keys": [ 
     "a", 
     "i" 
    ], 
    "length": 2, 
    "_fields": [ 
     { 
      "identity": { 
       "low": 0, 
       "high": 0 
      }, 
      "labels": [ 
       "Person" 
      ], 
      "properties": { 
       "name": "Abraham" 
      } 
     }, 
     { 
      "identity": { 
       "low": 1, 
       "high": 0 
      }, 
      "labels": [ 
       "Person" 
      ], 
      "properties": { 
       "name": "Isaac" 
      } 
     } 
    ], 
    "_fieldLookup": { 
     "a": 0, 
     "i": 1 
    } 
}] 

Warum zeigt Neo4J diese Beziehung? Und wie kann ich aufhören? Ich versuche, eine Abfrage zu erstellen, die verschiedene Beziehungen zwischen einer Gruppe von Knoten zurückgibt, und ich möchte wirklich nicht, dass Neo4J eingreift und eigene Beziehungen hinzufügt.

+1

Dies ist das erste Mal, dass ich die 'relationships'-Tag verwendet haben. Ich hätte nie gedacht, dass ich nach einem Beziehungsrat auf Stack Overflow ... – zmbq

+1

fragen würde https://stackoverflow.com/questions/37603618/how-to-hide-unwanted-relationship-nodes-in-neo4j/45121705#45121705 –

+0

Es ist nicht verwandt, es ist ein Duplikat. Ich habe gewählt, um zu schließen (stellt sich heraus, dass ich meine eigene Frage nicht wirklich schließen kann ...) – zmbq

Antwort

0

Es ist nur die Art, wie der Neo4j Browser visualisiert, nichts mehr. Da Sie beide Knoten haben, hat Neo4j alles, was es braucht (die Zeiger), um zu wissen, dass es eine Beziehung gibt (und zeigt). Wenn Sie das Ergebnis programmgesteuert verarbeiten (in Java oder so ..., wie Sie es tun müssen, da ich davon ausgehe, dass der Neo4j-Browser nicht das "Produktions" -Ergebnis sein wird), können Sie die Ergebnisse nach Ihren Wünschen verarbeiten. Wenn Sie nur an den Namen und nicht an den tatsächlichen Knoten interessiert sind, tun Sie einfach

MATCH (a:Person), (i:Person) 
WHERE a.name='Abraham' and i.name='Isaac' 
RETURN a.name, i.name 

Ich hoffe, dies hilft.

Grüße, Tom

Verwandte Themen