#neo4j #cypher #refactoring
Вопрос:
У меня есть 2 узла, где я хочу переместить все отношения «ТУДА» и » ИЗ » на второй узел.
//Это работает от
соответствия (с)<-[р:] так-(Ф {имя: ‘мяч(а)’}), (т {имя: ‘мяч(Б)’})
, С С, Р, Ф, Т
, позвоните Апок.рефакторинг.с(р, т)
урожайность ввода, вывода
возвращают c
//И это работает, чтобы
соответствовать (С)-[Р:й]->(F в {название: ‘мяч(а)’}), (т {имя: ‘мяч(Б)’})
, С С, Р, Ф, Т
, позвоните Апок.рефакторинг.к(р, т)
урожайность ввода, вывода
возвращают c
//Это не работает
соответствия (с)-[р:й]->(F в {название: ‘мяч(а)’})-[С2:есть]->(Д), (т {имя: ‘мяч(Б)’})
, С С, Р, Ф, Т, Р2, д
звонка Апок.рефакторинг.к(р, т)
звонок Апок.рефакторинг.с(Р2, т)
урожайность ввода, вывода
возвращают c
Я получаю ОШИБКУ: «Вызов процедуры внутри запроса не поддерживает неявное присвоение имен результатам».
Как я могу выполнить рефакторинг отношений и отношений в одном запросе?
Комментарии:
1. Можете ли вы попробовать поставить второй раз
WITH c, r, f, t, r2, d
междуCALL apoc.refactor.to(r, t)
иCALL apoc.refactor.from(r2, t)
?2. все равно получаю ту же ошибку 🙁
3. Пожалуйста, проверьте мой ответ.
Ответ №1:
Пожалуйста, попробуйте это:
MATCH (c)-[r:HAS]->(f {name: 'ball(a)'})-[r2:HAS]->(d), (t {name: 'ball(b)'})
WITH c, r, t, r2, d
CALL apoc.refactor.to(r, t)
YIELD input, output
WITH c, r2, t
CALL apoc.refactor.from(r2, t)
YIELD input, output
Return c
Номер строки 3
— это функция, которая принимает входные r, t
данные и в результате возвращает input, output
. Внутри этого return
у вас нет r2 и t, поэтому вы получаете сообщение об ошибке.
Комментарии:
1. ТЫ КРУТ!! Спасибо!