【问题标题】:How to return only the end/leaf nodes in a Neo4j cypher query?如何仅返回 Neo4j 密码查询中的末端/叶节点?
【发布时间】:2012-07-17 17:00:25
【问题描述】:

我有这样的结构:

user-[: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

【问题讨论】:

  • 是的,最后的查询是合理的。您通过没有任何进一步的传出categorized_in 关系来检查根。

标签: neo4j cypher


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    您现在可以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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-29
      • 1970-01-01
      • 2015-12-22
      • 2017-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多