Cypher -Neo4j在可变长度路径中设置节点属性值

时间:2014-05-03 10:12:29

标签: neo4j cypher neo4jphp

我是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 个答案:

答案 0 :(得分: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