我有这样的结构:
用户 - [:会话] - >主题 - [: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
答案 0 :(得分: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 :(得分: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