Я изо всех сил пытаюсь сделать связанный список с выражением cypher. Я пытаюсь сделать следующее для каждого k. Связанный список и: NEXT отношения должны быть изолированы k.Создайте связанный список для всех узлов, подключенных узлом cypher
match (elem:Event)<-[r:HAS_EVENT]-(k)
WITH elem ORDER BY elem.id ASC
WITH COLLECT(elem) AS elems
FOREACH (n IN RANGE(0, LENGTH(elems)-2) |
FOREACH (prec IN [elems[n]] |
FOREACH (next IN [elems[n+1]] |
MERGE (prec)-[:NEXT]->(next))))
Поскольку подмигнули не представляется возможным сделать MATCH заявление внутри FOREACH заявления я попытался MATCH (а: Some_Label) с а х UNWIND х в к и другим возможным способам выполнения этого кода пути для каждых к (блокировка id и т. д.). Я всегда получаю длинную цепочку: NEXT throu all: узлы событий, предполагающие, что оператор соответствия учитывает все k узлов. Мне нужна помощь в том, как сопоставить: Some_Label узлы и передать каждый из них в код выше.
Как ваши данные выглядят и кто является 'k'? Можете ли вы описать свою проблему проще или более подробно? –
k - билет поддержки в этом случае. Поэтому я хочу создать связанный список для каждого билета. Каждый: Квесты событий содержат некоторые другие узлы, связанные с ним, статус, категоризацию и т. Д. Каждый: узел билета имеет несколько узлов: привязанные к нему узлы. : Ticket и: метки событий индексируются по id Проблема в том, что я хотел бы взять билеты (MATCH (k: Ticket), которые у меня есть на моем графике, и выполнить приведенный выше код для каждого k из предыдущего утверждения соответствия. В идеале из инструкции LOAD CSV, поскольку новые записи будут загружены таким образом, но это необязательно. –
MATCH (a: Ticket) с --- SOMETHING --- match (elem: Event) <- [r: HAS_EVENT] - (k) С elem ORDER BY elem.id ASC WITH COLLECT (elem) AS elems FOREACH (n IN RANGE (0, LENGTH (elems) -2) | FOREACH (prec IN [elems [n]] | FOREACH (следующий IN [elems [n + 1 ]] | MERGE (prec) - [: NEXT] -> (next)))) –