【问题标题】:Consolidating results of cypher query when two result nodes are the same当两个结果节点相同时合并 cypher 查询的结果
【发布时间】:2013-10-19 17:19:25
【问题描述】:

以以下场景为例:

一个医院节点与许多医生节点相关。医生节点与其他医生相关,代表他们何时将患者转诊给另一位医生。这些转诊可以是不同医院的医生。医生之间的关系有一个名为 count 的属性,表示该医生将其患者转诊给第二位医生的次数。

我想做的是从医院层面看待这些转诊关系。我的查询目前如下所示:

START hospital1 = Node:Hospitals("*:*")
MATCH (hospital1)-[:CHILD_DOCTOR]->(doctor1)-[referral:REFERRED]-(doctor2)<-[:CHILD_DOCTOR]-(hospital2)
WHERE hospital1 <> hospital2
RETURN DISTINCT hospital1, hospital2, referral.count

这听起来很复杂,但查询非常简单。这是唯一的问题。假设医院 A 的两名医生将一名患者转介给医院 B 的两名医生,我最终会得到两条记录,其中医院 1 = 医院 A,医院 2 = 医院 B。我想将这些结果组合在一起并添加referral.count属性在一起。有没有办法用 Cypher 做到这一点?

【问题讨论】:

    标签: neo4j cypher node-neo4j


    【解决方案1】:

    不确定我是否正确理解了您的域。我的理解是,您在两家任意医院之间有很多路径(也称为转诊),并且想要总结它们。在这种情况下使用

    START hospital1 = Node:Hospitals("*:*")
    MATCH (hospital1)-[:CHILD_DOCTOR]->(doctor1)-[referral:REFERRED]-(doctor2)<-[:CHILD_DOCTOR]-(hospital2)
    WHERE hospital1 <> hospital2
    RETURN hospital1, hospital2, sum(referral.count)
    

    注意自己没有尝试查询。如需进一步讨论,请在http://console.neo4j.org 上创建示例数据集。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-25
      • 2011-04-05
      • 1970-01-01
      • 1970-01-01
      • 2020-06-23
      相关资源
      最近更新 更多