Как удалить несколько узлов в neo4j

Как удалить несколько узлов (НЕ ВСЕ) в neo4j?

У меня есть этот запрос
MATCH (n)
where n.name IS NULL
delete n

Он возвращает более одного узла, я хочу удалить все эти узлы (все узлы, которые были созданы по ошибке, поэтому стали нулевыми).

Ошибка, с которой я столкнулся,

javax.transaction.HeuristicRollbackException: Failed to commit transaction Transaction(11, owner:"qtp16626756-84")[STATUS_NO_TRANSACTION,Resources=1], transaction rolled back ---> javax.transaction.xa.XAException

СЛУЧАЙ 2: что делать в случае NOT NULL (свойство), но никакие отношения не связаны в пределах одного или двух узлов; означает узел, который является своего рода orhpan, не связанным с другим узлом.

Я пробовал использовать LIMIT / SKIP, но не работал. Есть помощь?


person ShreyansS    schedule 09.01.2014    source источник


Ответы (1)


Вам также необходимо удалить все отношения, связанные с этими узлами, например:

match (n)
where n.name IS NULL
optional match (n)-[r]-()
delete n, r

Обновление для вашего второго случая (удаляются только сироты):

match (n)
where NOT (n)--()
  and n.name IS NULL
delete n
person Eve Freeman    schedule 09.01.2014
comment
All nodes, which are mistakenly created thats why became null означает, что были созданы только узлы, я не вижу связанных с ними отношений, исходящих или входящих. - person ShreyansS; 10.01.2014
comment
Возможно, вам понадобится другой запрос, чтобы найти подходящие узлы. Вы можете попробовать MATCH (n) WHERE n.name is NULL RETURN n проверить, что они правильные. - person Eve Freeman; 10.01.2014
comment
Вы пробовали мой запрос? У меня такое чувство, что n.name IS NULL - это не то, что вы хотите запросить. - person Eve Freeman; 10.01.2014
comment
Большое спасибо, Уэс. Я думаю, что, поскольку я учусь neo4j самостоятельно, возможно, я не буду освещать важные вещи или могу ввести в заблуждение. Теперь нужно сконцентрироваться и оставаться на связи с такими мастерами, как ты. - person ShreyansS; 10.01.2014