AQL 嵌套数组值
AQL nested array values
我对 ArangoDB 和 AQL 还很陌生,我的问题与嵌套数组值有关。我不知道是否有办法做到这一点(或者即使我的查询被有效地编写)
为了简短起见,我有 2 个合集。一份用于 "Physicians",一份用于 "Indications"。每次我的病人去看医生咨询时,his/her 症状列表都会记录在适应症集合中。但是,之前的诊断可能是由另一位医生做出的。在这种情况下,我的 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"
}
]
}
]
我的问题是,对于过去的诊断数组 returned,diag_doc 字段是我 "Indications"集合,对应诊断医生"Physicians"集合中的一个_key值。使用 AQL return diag_doc 的完整详细信息的最佳方法是什么?
提前谢谢你。
PS: 我正在使用 ArangoDB 3.1.12
您可以使用子查询从 Physicians
集合中检索数据:
"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)
}
)
我对 ArangoDB 和 AQL 还很陌生,我的问题与嵌套数组值有关。我不知道是否有办法做到这一点(或者即使我的查询被有效地编写)
为了简短起见,我有 2 个合集。一份用于 "Physicians",一份用于 "Indications"。每次我的病人去看医生咨询时,his/her 症状列表都会记录在适应症集合中。但是,之前的诊断可能是由另一位医生做出的。在这种情况下,我的 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"
}
]
}
]
我的问题是,对于过去的诊断数组 returned,diag_doc 字段是我 "Indications"集合,对应诊断医生"Physicians"集合中的一个_key值。使用 AQL return diag_doc 的完整详细信息的最佳方法是什么? 提前谢谢你。
PS: 我正在使用 ArangoDB 3.1.12
您可以使用子查询从 Physicians
集合中检索数据:
"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)
}
)