Ответ 1
Вы не сглаживаете переменную WITH
. Измените это:
WITH n.inputID, collect(n) AS nodes
Для этого:
WITH n.inputID AS inputID, collect(n) AS nodes
В Neo4j 2.1.6 у меня есть узлы, которые не являются уникальными по отношению к определенному свойству, inputID
.
Используя Cypher, как удалить все узлы, которые являются дубликатами в терминах заданного свойства, оставляя только уникальные возможности?
Я пробовал следующее...
MATCH (n:Input)
WITH n.inputID, collect(n) AS nodes
WHERE size(nodes) > 1
FOREACH (n in tail(nodes) | DELETE n)
... но это приводит к...
Expression in WITH must be aliased (use AS) (line 2, column 6)
"WITH n.inputID, collect(n) AS nodes"
^
Спасибо,
С
Вы не сглаживаете переменную WITH
. Измените это:
WITH n.inputID, collect(n) AS nodes
Для этого:
WITH n.inputID AS inputID, collect(n) AS nodes
Как вы правильно поняли, использование хвоста в коллекции позволит вам удалить дубликаты, не забудьте удалить отношения до node (DETACH) и псевдоним поля, как указано в FrobberOfBits:
MATCH (n:Input)
WITH n.inputID AS inputID, collect(n) AS nodes
WHERE size(nodes) > 1
FOREACH (n in tail(nodes) | DETACH DELETE n)