当两个结果节点相同时,合并密码查询的结果

时间:2013-10-11 15:00:06

标签: neo4j cypher node-neo4j

以下面的场景为例:

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

我要做的是采取这些推荐关系并从医院层面查看。我的查询目前看起来像这样:

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医院的两位医生,我最终会得到两份记录,其中hospital1 = Hospital A,hospital2 = Hospital B.我想将这些结果合并在一起并添加referral.count物业在一起。有没有办法用Cypher做到这一点?

1 个答案:

答案 0 :(得分:3)

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

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

N.B。没有自己尝试查询。有关进一步的讨论,请在http://console.neo4j.org上创建一个示例数据集。