2017-03-22 3 views
0

Ich bin ziemlich neu in ArangoDB und AQL und meine Frage bezieht sich auf verschachtelte Array-Werte. Ich weiß nicht, ob es eine Möglichkeit gibt, dies zu tun (oder sogar, wenn meine Abfrage effizient geschrieben wird)AQL geschachtelte Array-Werte

Um dies kurz zu halten, habe ich 2 Sammlungen. Eine für "Ärzte" und eine für "Indikationen". Jedes Mal, wenn mein Patient einen Arzt aufsuchen muss, wird die Liste seiner Symptome in der Indikationsgruppe erfasst. Eine frühere Diagnose kann jedoch von einem anderen Arzt gestellt worden sein. In diesem Fall sieht meine AQL Syntax wie folgt:

FOR p in Patients 
FILTER p._key=="cad010117" 
RETURN { 
    "name" : CONCAT(p.pfname, " ", p.plastname), 
    "consultations" : (
     FOR i in Indications 
     FILTER i.pat_id == p._key 
      FOR d in Physicians 
      FILTER i.ind_consul_doc == d._key 

      RETURN { 
       "Doctor" : CONCAT(d.dtitle, " ", d.dfirstname, " ", d.dlastname), 
       "Consult Date" : i.ind_consul_dt, 
       "Symptoms" : i.symptoms[*], 
       "Past Diagnoses" : i.diagnosis[* RETURN { 
         "Condition" : CURRENT.diag, 
         "Diagnosed on" : CURRENT.diag_dt, 
         "Diagnosed by" : CURRENT.diag_doc 
        } 
       ] 
      } 
    ) 

Meine entsprechenden Ergebnisse:

[ 
    { 
    "name": "Alfred Jeffries", 
    "consultations": [ 
     { 
     "Doctor": "Dr Anthony Garcia", 
     "Consult Date": "22nd Jun 2016", 
     "Symptoms": [ 
      { 
      "type": "hyperpyrexia", 
      "details": "Temperature: 101", 
      "duration": "3d" 
      }, 
      { 
      "type": "anxiety", 
      "details": "Severe", 
      "duration": "1w" 
      }, 
      { 
      "type": "mania", 
      "details": "Moderate", 
      "duration": "1w" 
      }, 
      { 
      "type": "diaphoresis", 
      "details": "Increased sweating during the day only", 
      "duration": "3d" 
      } 
     ], 
     "Past Diagnoses": [ 
      { 
      "Condition": "Bipolar Disorder", 
      "Diagnosed on": "6th Jul 2016", 
      "Diagnosed by": "dc666555" 
      } 
     ] 
     } 
    ] 

Meine Frage ist, für die Array Vergangenheit Diagnosen zurück, das diag_doc Feld, das ein Wert ist innerhalb des Diagnose-Arrays in meiner "Indications" -Sammlung entspricht ein _key-Wert in der "Physicians" -Sammlung des Arztes, der die Diagnose gestellt hat. Was wäre der beste Weg, um die vollständigen Details der diag_doc mit AQL zurückgeben? Vielen Dank im Voraus.

PS: Ich verwende ArangoDB 3.1.12

Antwort

1

Sie eine Unterabfrage verwenden können, um die Daten aus der Physicians Sammlung abzurufen:

"Past Diagnoses": (FOR d IN i.diagnosis RETURN 
    { 
    "Condition" : d.diag, 
    "Diagnosed on" : d.diag_dt, 
    "Diagnosed by" : FIRST(FOR doc IN Physicians FILTER doc._key == d.diag_doc RETURN doc) 
    } 
) 
+0

Dank einer Tonne! Lief wie am Schnürchen :) –