2017-04-15 1 views
0

I verwandte Daten aus mehreren verwandten Knoten mit der folgenden Chiffre abrufen versuchen:Abrufen von Daten aus mehreren Knoten in Neo4j Cypher

Match (n {email:{paramEmail}})-[*..3]-(m) Return n,m", 
     { paramEmail: email}) 

Das Problem ist, wenn es keine bestehende Beziehung noch dann ist erhalte ich keine Zeilen returned ... Benutzer wurde nicht gefunden, obwohl der Benutzer (n) existiert, aber zu diesem Zeitpunkt keine Beziehungen hat. Ich brauche immer noch die Eigenschaften vom Benutzer (n) Knoten, so dass ich einen separaten Anruf tätigen muss. Gibt es eine Abfrage, die n zurückgeben würde, obwohl keine Beziehung zu m besteht?

Antwort

1

Ja, Spiel auf dem Benutzer mit der E-Mail zuerst, und dann einen fakultativen MATCH für den Rest verwenden:

MATCH (n {email:{paramEmail}}) 
OPTIONAL MATCH (n)-[*..3]-(m) Return n,m 

Auch würde ich Ihnen raten, Etiketten auf Ihrem Knoten zu verwenden. Auf diese Weise können Sie schnell einen Benutzer nach ihrer E-Mail suchen (nachdem Sie einen Index erstellt haben über: Benutzer (E-Mail)). Jetzt muss die Abfrage alle Knoten Ihres Diagramms scannen, um diejenigen mit dem angegebenen E-Mail-Parameter zu finden.

+0

Danke. Ich verwende Labels und Indexe für meine Suchen. – MichaelE