2015-11-30 63 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你認爲合適的。根據您的圖表,這可能會大大增加您的查詢時間。