代码之家  ›  专栏  ›  技术社区  ›  Neamesis

Neo4j:如果相关节点至少为2,则选择具有特定标签的相关节点

  •  0
  • Neamesis  · 技术社区  · 5 年前

    我是Neo4J的初学者。我需要帮助,我有这种类型的图表(这里非常简化):

    (人:人)<-[:关系1](i:项目)<-[:关系2](工作:工作)

    我不知道如何回报一个有两份工作的人。我的开始节点和结束节点之间并不是只有两个关系,当我试图计数时,对Neo4J来说太长了,我不知道如何编写WHERE子句。。。

    我想写这样的东西

    MATCH (person:Person)<-[*]-(job:Job) 
    WITH collect(job) AS jobs 
    WHERE jobs > 1
    RETURN person
    

    可能吗?谁能帮帮我吗?

    0 回复  |  直到 5 年前
        1
  •  1
  •   Dave Bennett    5 年前

    你很接近。你需要汇总每个人的工作。因为你有一个工作集合,而不是你需要使用的工作计数 size() 将其与1进行比较。

    MATCH (person:Person)<-[*]-(job:Job) 
    WITH person, collect(job) AS jobs 
    WHERE size(jobs) > 1 
    RETURN person
    

    或者,你也可以这样做。。。

    MATCH (person:Person)<-[*]-(job:Job) 
    WITH person, count(job) AS num_jobs 
    WHERE num_jobs > 1 
    RETURN person
    

    最好是缩小原始的范围,这样会更紧凑,不会导致任何失控的查询。

    MATCH (person:Person)<-[:relations1|realtiosn2*2]-(job:Job) 
    WITH person, count(job) AS num_jobs 
    WHERE num_jobs > 1 
    RETURN person