Итерация по коллекции с предложениями MATCH и CREATE

Я хочу сделать что-то подобное в шифре:

MATCH (n:node) WHERE n.ID = x        //x is an integer value
FOREACH (num in n.IDs: 
    MATCH (p:node) WHERE p.ID = num
    CREATE (n)-[:LINK]->(p) )

где num — массив целочисленных значений, относящихся к идентификаторам узлов, которые необходимо связать с узлом, совпавшим в первой строке.

Когда я запускаю этот запрос, я получаю сообщение об ошибке: Invalid use of MATCH inside FOREACH.

Я нахожусь на ранних этапах изучения Cypher и Neo4j. Как я могу добиться желаемой функциональности здесь? Или я лаю не на то дерево — я не понимаю чего-то, что делает это ненужным для меня?


person drew moore    schedule 09.01.2014    source источник


Ответы (1)


Это запрещено. Вместо этого используйте ПОИСКПОЗ верхнего уровня, например http://gist.neo4j.org/?8332363.

MATCH (n:node), (p:node)
WHERE n.ID = 1 AND p.ID in [2,3,4]
CREATE (n)-[:LINK]->(p)
person Peter Neubauer    schedule 09.01.2014
comment
Если есть число M (обозначает некоторое количество), то как мы можем получить p.ID в [от 2 до M] - person GvanJoic; 09.01.2015
comment
Это должно быть в документации FOREACH, имхо. foreach-then-match — это распространенная идиома во многих языках, поэтому было бы здорово, если бы было указано, что путь Cypher отличается! - person Noah Sussman; 28.07.2015
comment
Ссылка в ответе выдает Resource not found - person alan; 29.08.2019