4

我有这样的结构:

用户-[:talking]->topic-[:categorized_in]->topic[:categorized_in]->topic...等

从用户开始,我将如何获得他们正在谈论的最遥远的话题。基本上,这代表了他们正在谈论的顶级类别。这是我知道的唯一方法,它会返回沿途的所有节点,而不仅仅是叶节点。

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
4

2 回答 2

2

因此,对于任何感兴趣的人来说,这是如何做到的:

START user=node(1)
MATCH user-[:talking]->x<-[:categorized_in*0..]-y<-[?:categorized_in]-z
WHERE z is null
RETURN distinct y.uuid
于 2012-07-21T18:48:19.253 回答
1

您现在可以过滤 WHERE 中的模式

所以如果你有新版本的 Neo4j,我认为查询看起来像

START user=node(1)
MATCH user-[:talking]->x<-[:categorized_in*0..]-y
WHERE NOT(y<-[:categorized_in]-())
RETURN DISTINCT y.uuid
于 2013-04-04T01:24:05.573 回答