Подтвердить что ты не робот

Как удалить узлы Neo4j с повторяющимися свойствами?

В 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"
      ^

Спасибо,

С

4b9b3361

Ответ 1

Вы не сглаживаете переменную WITH. Измените это:

WITH n.inputID, collect(n) AS nodes

Для этого:

WITH n.inputID AS inputID, collect(n) AS nodes

Ответ 2

Как вы правильно поняли, использование хвоста в коллекции позволит вам удалить дубликаты, не забудьте удалить отношения до 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)