2017-03-06 2 views
1

Ich habe eine Beziehung auf, dass (a)-[:HAS]->(b)neo4j gibt es eine Möglichkeit, 'leere' Parameter in einer Abfrage zu ermöglichen?

Ich möchte der Benutzer in der Lage sein zu liefern a_id OR b_id und bekommen die Daten, etwas entlang der Linien von einer Chiffre-Abfrage wie:

MATCH (a:A {id: {a_id}})-[:HAS]->(b:B {id: {b_id}}) RETURN *

Aber Wenn ich einen Parameter a_id oder b_id nicht erhalte, erhalte ich einen Fehler. Gibt es einen Weg in neo4j, einem Parameter zu erlauben, nicht zu existieren und ihn dann zu ignorieren?

Vielleicht etwas entlang der Linien von: CASE {a_id} WHEN NOT NULL THEN ...

Antwort

1

können Sie Top-Level-param Namen verwenden. Zum Beispiel:

Bestanden params:

:params { "_": { a_id: '123' } } 

Und query:

MATCH (a:A {id: {_}.a_id})-[:HAS]->(b:B {id: {_}.b_id}) RETURN * 
+0

, die ausfallen können, da die Eigenschaft null sein wird, wenn nicht in den params geliefert. Ich denke, die Verwendung von COALESCE() kann dies beheben: 'MATCH (a: A {id: COALESCE ({_}. A_id, a.id)}) - [: HAS] -> (b: B {id: COALESCE ({_}. b_id, b.id)}) RETURN * ' – InverseFalcon

Verwandte Themen