Cypher -Neo4j Установить значение атрибута узла в путях переменной длины
Я новичок в neo4j, у меня следующая ситуация
match (c:customer{id:'12345'})-[r:buys]->(b:item)
with b,b.total as z
match (b)-[same:*1..z)]->(d)
return d
В приведенном выше запросе z является целым числом, но приведенный выше запрос не работает,
Буду признателен за все помощь и предложения, заранее спасибо
1 ответ
Вы не можете использовать переменную для длины пути. Обходной путь для этого будет:
match (c:customer{id:'12345'})-[r:buys]->(b:item)
with b,b.total as z
match p=(b)-[same:*1..9999)]->(d)
where length(p)=z
return d
Замените 9999 своего рода глобальным верхним пределом, подходящим для вашего варианта использования. Имейте в виду, это может быть довольно неэффективно. В этом случае может быть лучше отправить 2 оператора Cypher:
match (c:customer{id:'12345'})-[r:buys]->(b:item) return id(b), b.total as z
Для второго запроса введите значение z с помощью конкатенации строк:
match (b)-[same:*1..<z>)]->(d) return d