Cypher - 获取节点的所有关联关系

Cypher - get all associated relationships for a node

我有以下设置:

一个医生可以有多个病人,每个病人可以有多个诊断。 我需要 return X 医生、他的所有相关患者及其相关诊断。 如何编写如下嵌套关系查询? 我现在有以下查询:

 MATCH
(p: Patient)-[:PATIENT_AT]->(d:Doctor),
(di:Diagnosis)-[:DIAGNOSIS_BY]->(d:Doctor),
(p:Patient)-[:HAS_DIAGNOSIS]->(di:Diagnosis)
WHERE
 d.id=1000000
 RETURN p,di

但这是 return 向我发送两个单独的查询。我可以在一个查询中得到相同的结果吗:

   patient 1--> all diagnosis
   patient 2 --> all diagnosis

或者我需要两个单独的循环吗?

对于单个查询:可能像这样会满足您的需求(未经测试,因为我没有您的数据,但是...应该接近):

MATCH (doc:Doctor {id=1000000})<-[:PATIENT_AT]-(pat:Patient)-[:HAS_DIAGNOSIS]->(diag:Diagnosis)
return doc,pat,collect(diag)

此特定查询忽略了 (:Doctor)(:Diagnosis) 之间的直接关系,但我认为您要查找的结果不需要它,因为每个患者都与诊断相关联。