[Arango DB] Graph Database – Query 001 – Basic Controls and Data Read

【前言】

我們在之前都只靠 Web UI 進行資料的架設與連結的綁定,那接著我們就要透過 Query Function 開始取得資料啦。在這篇將講述最基礎的語法,讓各位能更快理解底層的用法。

【重點整理】

  1. 我們可以將常用的 query function 儲存起來,快速呼叫與切換

【預計內容】

  1. 儲存 Query Function
  2. 物件與回傳
  3. 自訂輸入值
  4. 迴圈與限制
  5. 資料的排序

【主要內容】

1. 儲存 Query Function

在多數時候,我們設計好 Query Function 總是要儲存起來,減少重複書寫的時間。那在 Arango DB 也支援這種服務,那我們當然要先提及。我們後續輸入完 Query 語法後,都能透過 Save As 按鈕保存,並從 Queries 快速呼叫。我們甚至還能夠匯出資料到本地,方便後續的開發工作。

2. 物件與回傳

在取值時,最重要的必然是資料與回傳值。那在這邊我們能透過 DOCUMENT('_id') 取得物件,並利用屬性取得特定目標。最後,一定要使用 RETURN 回傳結果,我們才能取得輸出值。

那在下方範例中,按下執行後,我們應該取得 Claude Monet 的資料,並只回傳名稱、出生死亡與國籍。

GraphQL
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 語法,我們就修改前面的回傳模板,取得所有作家的相關資料。

GraphQL
FOR artist in artist_vertices
  RETURN {
    artist: artist.full_name,
    nationality: artist.nationality, 
    birth: artist.birth, 
    death: artist.death
  }

但 421 筆實在太過龐雜,我今天只想先取得最初的 10 筆就好,那我們只要在 RETURN 之前,加上 LIMIT 與數量即可。

GraphQL
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 表示法。

GraphQL
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(降冪)。

GraphQL
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/

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.