Я публикую новый вопрос, потому что это отдельная, но связанная с этим проблема: Neo4j: связать разные узлы с одним узлом
Приведенный ниже запрос возвращает правильное числоузлов.
MATCH (act)--(obj)
WHERE obj.filename IN ["6013", "6005"]
WITH act.timestamp as timestamp, collect(DISTINCT act) as acts
CREATE (a:Abs{name: 'SigEvent'})
FOREACH (act in acts | CREATE (act)-[:LINK]->(a))
Следующий запрос игнорирует COLLECT и создает узел a
для каждой записи в коллекции вместо создания узла a
для каждой пары.Кроме того, когда я перемещаю CREATE
за пределы FOREACH
, я получаю следующую ошибку: Type mismatch: expected Any, Map, Node or Relationship but was List<Map>
.
MATCH (act)--(obj)
WHERE obj.filename IN ["6013", "6005"]
WITH act.timestamp as timestamp, collect({act:act, obj:obj}) as pairs
CREATE (a:act{ Event: pairs.obj.filename, Description:pairs.act.message, timestamp:timestamp})
FOREACH (pair in pairs | CREATE (pair)-[:LINK]->(a))
Пример набора данных:
Набор 1: (действие: «Журнал событий», отметка времени: 3461000) (действие: «Отчет о работоспособности», отметка времени: 3461000)
Набор 2: (действие: «Журнал событий», отметка времени: 149100) (действие: «Отчет о работоспособности», отметка времени: 149100)
Желаемый результат:
(a {Источник: «Журнал событий» и «Отчет UPtime», отметка времени: 3461000}) <- [: LINk] - (act) </p>
(a {Источник: «Журнал событий» и «Отчет UPtime», отметка времени: 149100) <- [: LINk] - (act) </p>