【前言】
我們在之前都只靠 Web UI 進行資料的架設與連結的綁定,那接著我們就要透過 Query Function 開始取得資料啦。在這篇將講述最基礎的語法,讓各位能更快理解底層的用法。
【重點整理】
- 我們可以將常用的 query function 儲存起來,快速呼叫與切換
【預計內容】
- 儲存 Query Function
- 物件與回傳
- 自訂輸入值
- 迴圈與限制
- 資料的排序
【主要內容】
1. 儲存 Query Function
在多數時候,我們設計好 Query Function 總是要儲存起來,減少重複書寫的時間。那在 Arango DB 也支援這種服務,那我們當然要先提及。我們後續輸入完 Query 語法後,都能透過 Save As 按鈕保存,並從 Queries 快速呼叫。我們甚至還能夠匯出資料到本地,方便後續的開發工作。
2. 物件與回傳
在取值時,最重要的必然是資料與回傳值。那在這邊我們能透過 DOCUMENT('_id')
取得物件,並利用屬性取得特定目標。最後,一定要使用 RETURN 回傳結果,我們才能取得輸出值。
那在下方範例中,按下執行後,我們應該取得 Claude Monet 的資料,並只回傳名稱、出生死亡與國籍。
LET artist = DOCUMENT('artist_vertices/366')
RETURN {
artist: artist.full_name,
nationality: artist.nationality,
birth: artist.birth,
death: artist.death
}
3. 自訂輸入值
但在許多情況,我們會透過輸入值判斷要找那些資料,而非寫死在程式碼中。這時,我們就要透過 @ 標記變數。那在 Web UI 的右側就會出現欄位可以填寫。
4. 迴圈與限制
通常我們不只有一筆資料,總要透過迴圈輸出多筆資料。那在 AQL 只支援 FOR … IN 語法,我們就修改前面的回傳模板,取得所有作家的相關資料。
FOR artist in artist_vertices
RETURN {
artist: artist.full_name,
nationality: artist.nationality,
birth: artist.birth,
death: artist.death
}
但 421 筆實在太過龐雜,我今天只想先取得最初的 10 筆就好,那我們只要在 RETURN 之前,加上 LIMIT 與數量即可。
FOR artist in artist_vertices
LIMIT 10
RETURN {
artist: artist.full_name,
nationality: artist.nationality,
birth: artist.birth,
death: artist.death
}
那或者說,今天確定有個目標,比如名為 Paul 的畫家,我們則能依靠 FILTER 先進行篩選。關於塞選的判斷式,常見有 ==, !=, >=, >, <, <=, LIKE, IN, NOT IN 以上的幾種,另外也支援 REGEX 表示法。
FOR artist in artist_vertices
FILTER artist.first_name == 'Paul'
RETURN {
artist: artist.full_name,
nationality: artist.nationality,
birth: artist.birth,
death: artist.death
}
5. 資料排序
在預設情況下,系統會依照資料順序跑過,但如果今天想要不同的排序方法,就要倚靠 SORT 方法來幫忙。下方範例我們使用出生年分當作排序條件。那預設的方向是 ASC(升冪),想要換方向可改用 DESC(降冪)。
FOR artist in artist_vertices
SORT artist.birth ASC
RETURN {
artist: artist.full_name,
nationality: artist.nationality,
birth: artist.birth,
death: artist.death
}
【後話】
那在這篇中,我們涵蓋了最基礎的數種取得資料的基礎,那在下一篇,我們就會透過 Edge 連結來取得我們的資料,並透過集合來塞選最終的結果。
【參考資料】
[1] Data Queries
https://docs.arangodb.com/3.12/aql/data-queries/