这个问题似乎有些天真,但是有可能选择具有特定属性值的树的最近顶点吗?例如,让我们创建
CREATE (a: IM { level:0 })-[:conn { weight: 1 }]->(fchild1:task { completed:false })
CREATE (a)-[:conn { weight: 1 }]->(fchild2:task { completed:true })
CREATE (fchild1)-[:conn { weight: 1 }]->(b:task { completed:false })
CREATE (fchild1)-[:conn { weight: 1 }]->(c:task { completed:true })
CREATE (fchild1)-[:conn { weight: 1 }]->(d:task { completed:false })
CREATE (fchild2)-[:conn { weight: 1 }]->(e:task { completed:false })
CREATE (fchild2)-[:conn { weight: 1 }]->(f:task { completed:false })
是否可以为c
选择已完成= false的最近节点?
答案 0 :(得分:1)
你想在树上走来走去吗?无论哪种方式都不应该太难:
MATCH path, (a:IM)-[*1..10]-(other:IM)
WHERE <some match to get your `a` node> AND other.completed = false
RETURN other, length(path) AS distance
ORDER BY length(path)
LIMIT 1
您可以根据需要增加10
或删除1..10
。根据您的图表,这可能会大大增加您的查询时间。