2017-03-22 12 views
0

ArangoDBとAQLはかなり新しく、ネストされた配列の値に関連しています。これができる方法があるかどうかわかりません(または質問が効率的に書かれている場合でも)AQLネストされた配列の値

これを短くするために、私は2つのコレクションを持っています。 1つは「医師」、もう1つは「適応症」です。私の患者が相談のために医者を見るたびに、その症状のリストがIndicationsコレクションに記録されます。しかし、以前の診断は別の医師によって行われた可能性があります。この場合、私のAQLの構文は次のようになります。

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 
        } 
       ] 
      } 
    ) 

マイ対応する結果:

[ 
    { 
    "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" 
      } 
     ] 
     } 
    ] 

私の質問で、過去の確定診断配列が返さのために、値はdiag_docフィールド、私の "Indications"コレクションの診断配列の内部は、診断を行った医師の "Physicians"コレクションの_key値に対応しています。 AQUを使用してdiag_docの完全な詳細を返す最良の方法は何ですか? ありがとうございます。

PS:私はあなたがPhysiciansコレクションからデータを取得するために、サブクエリを使用することができますArangoDB 3.1.12

答えて

1

を使用しています:

"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

おかげトンを!チャームのように働いた:) –

関連する問題