2014-06-03 3 views
0

Я хочу, чтобы удалить все связи и узлы при удалении конкретного узлаNeo4j запрос, чтобы удалить все узлы и отношения прямо или косвенно связан

Например

У меня есть структура как

A->B->C->D->D1->E1 
     ->D2 
     ->D3 

Что я хочу, когда я удаляю узел B, все отношения и узлы, которые прямо или косвенно связаны с этим узлом B, удаляются , как если бы я удалял B, тогда C, D D1, D2, D3, E1 также должны быть удалены как их отношения.

Есть ли способ сделать это? У меня есть график, в котором узел состояния имеет множество узлов магазина, и каждый узел магазина имеет множество узлов узлов, и каждый узел узлов имеет множество ценовых узлов.

Теперь, если я удаляю узел состояния, все хранилища, которые к нему подключены, должны быть удалены, и все элементы, которые подключены к этим хранилищам, должны быть удалены, а затем узлы цены, которые подключены к этим узлам, должны делать ставки удалено

+0

Я неохотно, чтобы дать вам этот запрос, как это было бы очень легко злоупотребить его и удалить кучу вещей не предназначали. Но я расскажу вам, как это сделать: загляните в инструкцию FOREACH здесь (http://docs.neo4j.org/chunked/stable/query-foreach.html), и когда вы выражаете свой путь, сопоставьте его с дорожкой , как «MATCH p = A-> B-> C (...)" – FrobberOfBits

ответ

1

Следующий запрос Cypher удалит весь подграф, внедренный на определенном узле.

Я притворяюсь, что вы находите корень подграфа, проверяя, что его свойство xxx имеет значение 'yyy'.

MATCH (root {xxx:'yyy'})-[r1*]->(x) 
OPTIONAL MATCH()-[r2]->(root) 
FOREACH(r IN r1 | DELETE r) 
DELETE r2, root, x; 
Смежные вопросы