2016-06-24 7 views
2

Ich muss bestimmte Knoten wie eq.page, ob sie Beziehung haben oder nicht mit einigen anderen Knoten .. like Tags.Neo4j-Multiple Match-Anweisung in cypher Abfrage mit if sonst conditon

If they are connected to tag nodes then search for the search string in page name and the tag names 

Else search for the search string in page name only 
MATCH ...//nodes of certain type  
WHERE  
    if r is null' 
     ...//Match query without relation for searching 
    else 
     ...//Match query without relation for searching 

Return ... 

MATCH (n:page)<-[r:pagetag]-(tag) 
if r is null 
then n.title CONTAINS 'java'or tag.name IN ["java"] 
return distinct n.name 
else n.title CONTAINS 'java'return distinct n.name 
    END 

Diese Abfrage Fehler gibt. Kann Syntaxproblem sein. Aber ich möchte nur für die Seiten nach so suchen.

Antwort

2

Endlich erreicht, was ich wollte. Danke allen. OPTIONAL Match hat super für mich funktioniert.

MATCH (s:page) 
WITH s 
OPTIONAL MATCH (s)<-[r:pagetag]-(tag) 
WITH s,r,tag 
Where s.pagename contains 'juniors'or tag.name contains 'math' 
return distinct s.pagename 
0

Ich glaube nicht, dass Sie verwenden können, wenn Sie sonst in Neo4j verwenden müssen, oder foreach simulieren, wenn.

+0

Sie können Fälle, die Fragen haben, wie ich die Bedingung machen wollen für if-else –

+0

ja sehen http://stackoverflow.com/questions/27576427/cypher-neo4j-case-expression-with-merge – Mvde

+0

Bitte lies meine Frage noch einmal. Vielleicht kann ich dich nicht verstehen, aber diese Frage hat mir nicht geholfen. –

1

Ist das nicht nur Grundvoraussetzungen?

MATCH (n:page)<-[r:pagetag]-(tag) 
WITH n,r,tag 
WHERE r IS NULL AND (n.title CONTAINS 'java' or tag.name IN ["java"]) 
OR NOT r is NULL AND (n.title CONTAINS 'java') 
return distinct n.name 
+0

Sir es funktioniert immer noch nicht für mich. Als ob der Seitenknoten und der Markierungsknoten keine Beziehung haben, wird der bestimmte Seitenknoten nicht durch diese Abfrage durchsucht. Es tut mir leid, aber brauche deine Anleitung. Bis ich daran arbeite. danke –

+0

Eigentlich Sir ich benutze neo4j ver 2.3.2, wo der Null-Check und die Where-not-Klauseln nicht funktionierten. Optionales Match hat mich gerettet. Vielen Dank. Ich habe die richtige Abfrage gepostet –