2012-07-17 88 views
4

我有一個結構,像這樣:如何僅返回Neo4j密碼查詢中的結束/葉節點?

用戶 - [:說] - >話題 - [:categorized_in] - >話題[:categorized_in] - >話題...等

在用戶開始,我將如何獲得他們談論的最遙遠的話題。基本上這代表了他們正在討論的頂級類別。這是我知道去做這件事的唯一方式,它會沿途返回所有節點,而不僅僅是葉節點。

START user=node(1) 
MATCH user-[:talking]->x<-[:categorized_in*0..]-y 
RETURN distinct y.uuid 

這是我最近的嘗試。它似乎工作,雖然我不知道這是否是去它的最好辦法?:

START user=node(1) 
MATCH user-[:talking]->x<-[:categorized_in*0..]-y<-[?:pull]-z 
WHERE z is null 
RETURN distinct y.uuid 
+1

是,最後的查詢是合理的。你沒有任何進一步傳出的'categorized_in'關係來檢查根目錄。 – 2012-07-19 06:39:32

回答

2

因此,這是如何做到這一點任何人感興趣的是:

START user=node(1) 
MATCH user-[:talking]->x<-[:categorized_in*0..]-y<-[?:categorized_in]-z 
WHERE z is null 
RETURN distinct y.uuid 
1

你可以現在filter against patterns in the WHERE

所以,如果你有Neo4j的一個新版本,我想查詢看起來像

START user=node(1) 
MATCH user-[:talking]->x<-[:categorized_in*0..]-y 
WHERE NOT(y<-[:categorized_in]-()) 
RETURN DISTINCT y.uuid