0

たとえば、次のシナリオを考えてみましょう。

病院ノードは、多くの医師ノードに関連付けられています。医師ノードは、患者を別の医師に紹介するときを表す他の医師に関連しています。これらの紹介は、別の病院の医師に行うことができます。医師間の関係には、その医師が患者を別の医師に紹介した回数を示すカウントと呼ばれるプロパティがあります。

私がやろうとしているのは、これらの紹介関係を病院レベルから見てみることです。私のクエリは現在次のようになっています。

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 の 2 人の医師が患者を病院 B の 2 人の医師に紹介するとします。最終的には、病院 1 = 病院 A、病院 2 = 病院 B という 2 つのレコードになります。これらの結果を組み合わせて、referral.count を追加します。プロパティを一緒に。Cypherでこれを行う方法はありますか?

4

1 に答える 1

3

あなたのドメインを正しく理解できたかどうかわかりません。私の理解では、任意の 2 つの病院の間に多くのパス (別名、紹介) があり、それらを合計したいと考えています。この場合、使用

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

NB は自分でクエリを試しませんでした。詳細については、http://console.neo4j.orgでサンプル データセットを作成してください。

于 2013-10-11T21:03:37.080 に答える