2016-08-03 23 views
0

Ich habe zwei Benutzer:Neo4j Cypher v2 einen Knoten und eine Beziehung Lookup, die sowohl kann oder nicht vorhanden sind, zurückkehren

MATCH (a:user {id: 1}), (b:user {id: 2}) 
CREATE (a)-[r:FOLLOWS]->(b) 

Um zu sparen:

CREATE (a:user {id: 1}) 
CREATE (b:user {id: 2}) 

Benutzer einander folgen können mehrere Rundreisen über das Netzwerk würde Ich mag ein Benutzer nachzuschlagen, und ob ein anderer Benutzer folgt ihnen in der gleichen Abfrage:

MATCH (a:user {id: 1}), (b:user {id: 2}), (a)-[r:FOLLOWS]->(b) 
RETURN a, b, r 

Aber wenn die FOLLOWS Beziehung nicht existiert, bekomme ich nichts zurück. Gibt es eine Möglichkeit, den Benutzer immer zurückzugeben und einen NULL für die Beziehung abrufen, wenn es nicht vorhanden ist?

Antwort

2

OPTIONAL MATCH werden versuchen, das Muster zu entsprechen und das Rück nulls für diejenigen, die es nicht gibt:

MATCH (a:user {id: 1}), (b:user {id: 2}) 
OPTIONAL MATCH (a)-[r:FOLLOWS]->(b) 
RETURN a, b, r