2013-04-18 4 views
1

Я думаю, что это простой вопрос, но я не могу найти ответ. Я пробовал различные способы удаления отношений в neo4j 1.6, используя cypher, но получая ошибку.Удалить связь в neo4j 1.6 using cypher

start n = node(1) match n-[r:KNOWS]-m delete r; 

Я хочу, чтобы удалить все отношения с типом ЗНАЕТ, но я получаю ошибку -

==> SyntaxException: expected return clause 
==> "start n = node(1) match n-[r:KNOWS]-m delete r; " 

Даже если я дам

start n = node(1) match n-[r:KNOWS]-m delete r return count(r); 

он не работает.

Примечание: выше выпуск не отображается на neo4j 1.8, но мне нужно как-то запустить запрос на neo4j 1.6.

+1

вы можете использовать свою 'neo4j-shell' с командами' traverse' и 'rmrel' или javascript' eval'. Вы * должны * также иметь возможность запуска 1.8 оболочки против 1.6, поскольку формат магазина не изменился. Но обязательно сделайте резервную копию! –

+0

благодарит Майкла за ответ, я твой поклонник! eval хорош для небольших изменений в узлах, но для огромного количества узлов (миллионов) для этого требуется несколько часов и как-то ненадежных (например, getRelationships() работает в одной системе, а не в другой системе с той же версией neo4j). – hack3r

ответ

2

Вы не сможете сделать это с помощью Cypher по крайней мере, с использованием 1,6

мутирует Cypher доступен с 1,8. Возможно, вам придется использовать API для удаления.

+0

API занимает много времени, чтобы удалить отношения/узлы. Предполагается, что он включает вызовы REST для каждой операции crudx. – hack3r

0

Проведя некоторое время на лучший способ сделать это для большого количества узлов, перемещая папку данных из экземпляра neo4j 1.6 в экземпляр neo4j 1.8 и выполняя запросы cypher, есть самый быстрый способ и превосходит запуск javascript на neo4j -shell/вызов REST api.

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