2015-11-30 29 views
1

这个问题可能看起来有点天真,但可以选择具有特定属性值的树的最近顶点吗?例如,让我们创建选择与特定属性最近的邻居

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 }) 

是否有可能选择已完成= false为c最近的节点?

回答

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你认为合适的。根据您的图表,这可能会大大增加您的查询时间。