2013-08-13 2 views
0

У меня есть модель графа, и я хочу, чтобы запрос, основанный на определенных условиях ..остановить Cypher запрос, если условие не удалось

Я использовал With и Where сделать вложенный запрос; это было бы как

START n1=node:ValueIndex('VALUE:DCM') 
MATCH p1 = n1-[r1:REL]->n2 
WHERE some_condition [1] 

With n1,n2,r1,p1 
match p2 = n1-[r1:REL]->n2-[r2:PASS_REL]->n3 
where some_condition [2] 


With n1,n2,r1,p1, n3,r2, p2 
match p3 = n1-[r1:REL]->n2-[r2:REL]->n3-[r3:REL]->n4 
where some_condition [3] 

With All the values above 
Where "condition that must be applied to all nodes" [4] 

RETURN n1 ,n2,n3, n4 

в этом случае условие 1,2,3 4 должна быть истинной, чтобы получить правильные данные ..

Но что я действительно хочу, что когда какое-либо из условий является ложным, запрос останавливается, но данные из предыдущих условий должны быть возвращены ..

Любая помощь будет оценена ..

+0

Для таких запросов я бы рекомендовал делать это программно с помощью Java lib или аналогично логике перед возвратом результатов. – Edward

+0

Но как это можно сделать в java ?? Я думаю, что для этого потребуется слишком много времени, так как у меня может быть более 10 условий. –

ответ

0

Это звучит немного слишком сложной, чтобы сделать в хорошей моде с Cypher. Я бы заглянул в расширение или плагин сервера, используя всю мощь Java (или другого языка сценариев JVM), см. http://docs.neo4j.org/chunked/snapshot/server-extending.html

+0

Как использовать плагин для выполнения трюка? –

Смежные вопросы