В вашем вопросе не указано, что вы хотите удалить.Этот запрос предполагает, что вы хотели, чтобы ваш последний запрос удалил узлы b
(и возвратил некоторые данные об удаленных узлах b
):
MATCH (a:Activity)
WITH a.CaseId as id, COLLECT(a.Name) AS Trace_Type
MATCH (b:CaseActivity)
WHERE id = b.CaseId
WITH
COUNT(distinct b.CaseId) AS Frequencies,
Trace_Type,
COLLECT(distinct b.CaseId) AS CaseId,
COLLECT(DISTINCT b) AS bs
FOREACH(x IN bs | DELETE x)
RETURN Frequencies, Trace_Type, CaseId
ORDER BY Frequencies DESC;
Переменные, содержащие значения, полученные из удаленных узлов b
(например, Frequencies
и CaseId
) по-прежнему будут действительны после удаления узлов.
Хитрость, которую стоит отметить в вашем конкретном примере, заключается в том, что ваше последнее предложение WITH
использовало агрегацию , с Trace_Type
в качестве ключа группировки.Чтобы мой ответ не изменил ключ группировки (и, следовательно, возможно, изменил ваши возвращаемые результаты), я просто добавил COLLECT(DISTINCT b) AS bs
к предложению WITH
.Затем, поскольку каждый bs
является списком b
узлов (для Trace_Type
), я использовал FOREACH
для удаления узлов в каждом списке.