【发布时间】:2013-11-07 21:53:09
【问题描述】:
我想要做什么
对于 Neo4j 来说相对较新,我试图在 Neo4j 图形数据库中使用 Cypher 查找某些节点。节点应通过某种类型的关系链与进一步的关系条件连接:
// Cypher
START self = node(3413)
MATCH (self)<-[rel:is_parent_of*1..100]-(ancestors)
WHERE rel.some_property = 'foo'
RETURN DISTINCT ancestors
出了什么问题
如果我删除深度部分*1..100,查询会起作用,但当然,那么只允许self 和ancestors 之间存在一种关系。
但是,如果我通过引入深度 *1..100 允许 ancestors 距离 self 几步之遥,则查询将失败:
错误:应为 rel 是一个地图,但它是一个集合
我想,也许这个语法将rel 定义为is_parent_of*1..100,而不是将rel 定义为is_parent_of 类型的关系并允许更大的关系深度。
所以,我试图通过使用括号来明确我的意图:[(rel:is_parent_of)*1..100。但这会导致语法错误。
如果能提供任何解决此问题的帮助,我将不胜感激。谢谢!
【问题讨论】: