[英]ArangoDB AQL deep array scan
我有一組客戶及其訪問過的地方,組織如下:
{
"customer_id": 151,
"first_name": "Nakia",
"last_name": "Boyle",
"visited_places": [
{
"country": "Liberia",
"cities": [
"Mullerside",
"East Graham"
]
},
{
"country": "Rwanda",
"cities": [
"West Kristofer",
"Effertzbury",
"Stokeston",
"South Darionfort",
"Lewisport"
]
}
]
}
我試圖找到訪問過特定國家/地區特定城市的所有客戶。 我讓它像這樣工作:
FOR target IN usertable
FILTER [] != target.visited_places[* FILTER CURRENT.country == @country AND CONTAINS(CURRENT.cities, @city)]
LIMIT @limit
RETURN target
查詢看起來很麻煩,我不確定它是否高效。
在可讀性和性能方面有沒有更好的方法來做到這一點?
您可以按國家/地區過濾並在visited_places[*].country
上為其創建一個持久數組索引,但您仍然需要一個次要條件來確保您要查找的國家/地區和城市出現在同一數組元素中:
FOR doc IN usertable
FILTER @country IN doc.visited_places[*].country
FILTER LENGTH(doc.visited_places[* FILTER CURRENT.country == @country AND @city IN CURRENT.cities])
RETURN doc
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.