ArangoDB 學習筆記(1)入門篇


主要學習內容:

  • 安裝並運行本地ArangoDB服務器
  • 使用Web界面與之交互
  • 存儲數據庫中的示例數據
  • 查詢數據庫以再次檢索數據
  • 編輯和刪除現有數據

1、安裝

下載地址

https://www.arangodb.com/download/

安裝過程中將提示輸入root的密碼,記住root密碼已被登陸使用。

安裝客戶端

如果客戶端顯示未將默認執行命令添加到環境變量中,可以人工添加

C:\Users\name\AppData\Local\ArangoDB3-client 3.3.15\usr\bin

  這樣就可以使用arangoimp,導入數據,arangoexport導出數據等,foxx等功能了

 

2、web界面

默認情況下,啟用身份驗證。默認用戶是 root根據所使用的安裝方法,提示輸入root密碼或默認root密碼的安裝過程為空(參見上文)。

Aardvark登錄表

接下來,將詢問您使用哪個數據庫。每個服務器實例都附帶一個_system數據庫。選擇此數據庫以繼續。

選擇數據庫

然后,您應該在儀表板上顯示如下服務器統計信息:

Aardvark儀表板請求統計

有關該接口的更詳細說明,請參閱Web Interface

3、數據庫、集合和文檔

(1)創建

數據庫是一組集合,集合存儲了記錄,記錄就是所謂的文檔。因此collections可以被視為關系型數據庫中的表,documents可以被視為表中的每一行數據。不同的是我們不需要定義字段,因為每一個document當中包含的是鍵值對,統一個collections中的所有documents的鍵值結構大多數是相同的,但數據庫並不硬性要求documents必須結構一致。

現在我們可以使用默認_system數據庫並使用Web界面來創建集合collections和文檔documents

首先創建一個collections:名字可以叫users

點擊+增加文檔,__key__選擇默認自增,不進行設置。這里的key是惟一的而且一旦設定將無法更改。

_key 總是字符串格式,如自動生成的key為3553,然后_id為users/3553

現在該文檔中還沒有任何內容,我們可以點擊Append來添加內容,會出現Field和Value兩個空白可以填列。我們可以輸入name:你的名字,age:你的年齡,然后點擊保存。這樣就保存到了數據庫中。

再次點擊collection,點擊users就可以看到剛剛創建的一個document了。

(2)查詢

點擊Queries

輸入查詢語句:

RETURN DOCUMENT("users/3553")

  將會顯示剛剛創建的內容

[
{
"_key": "3553",
"_id": "users/3553",
"_rev": "_XbVPcM6--_",
"name": "your name",
"age": 25
}
]

DOCUMENT()語句是用來查找一個文檔或一組文檔,當你指導key或者id的時候。查詢的結果是一個數組。

這種查詢被稱為數據訪問查詢,沒有修改;還有一種是數據修改查詢。

INSERT { name: "Katie Foster", age: 27 } INTO users

  那么我們可以看到我們想users collections當中新增了一個document.我們可以看到返回的是一個空數組。因為我們沒有定義RETURN.

如果我們希望返回剛剛創建的document,我們可以使用RETURN NEW來顯示

INSERT { name: "James Hendrix", age: 69 } INTO users
RETURN NEW

  如何查詢剛剛創建的三個用戶呢?

我們可以使用DOCUMENT([ ])包含一個數組的形式來查詢。示例:

RETURN DOCUMENT(["users/5595","users/3553","users/5138"])

  查詢結果:

[
  [
    {
      "_key": "5595",
      "_id": "users/5595",
      "_rev": "_XbVgg3e--_",
      "name": "James Hendrix",
      "age": 69
    },
    {
      "_key": "3553",
      "_id": "users/3553",
      "_rev": "_XbVPcM6--_",
      "name": "name1",
      "age": 25
    },
    {
      "_key": "5138",
      "_id": "users/5138",
      "_rev": "_XbVd-ei--_",
      "name": "name2",
      "age": "22"
    }
  ]
]

  但是如果用戶很多的情況下,使用這種形式就不好了。

我們可以使用FOR語句來循環遍歷返回結果

FOR user IN users
RETURN user

  你可以看到返回的結果與插入的循序並不一致,因為返回的結果是沒有順序的,如果希望排序,可以加上SORT 

FOR user IN users
SORT user._key
RETURN user

  注意因為_key是字符串,因此排序總是1在前面,這樣可能不是我們想要的,我們也可以根據age進行排序

FOR user IN users
  SORT user.age DESC
  RETURN user

  DESC代表降序。

如果我們希望篩選年齡在30歲以上的人,我們可以使用FILTER

FOR user IN users
  FILTER user.age > 30
  SORT user.age
  RETURN user

  修改數據可以使用UPDATE

UPDATE "5138" WITH {age:33} IN users
RETURN NEW  

UPDATE 后面跟key,WITH后跟修改的內容,IN 跟着collections

如果使用REPLACE的話,那么5138用戶將只有id,key和age屬性,name屬性將消失。

再次查詢,我們得到的用戶名將增加一位。

FOR user IN users
  FILTER user.age > 30
  SORT user.age
  RETURN user.name

  

如果我們要更改輸出的格式,可以在RETURN中使用鍵值對的方式來指定

FOR user IN users
  RETURN { userName: user.name, age: user.age }

  這樣返回的結果就是userName,而不是默認的name了。

[
  {
    "userName": "James Hendrix",
    "age": 69
  },
  {
    "userName": "John Smith",
    "age": 32
  },
  {
    "userName": "Katie Foster",
    "age": 40
  }
]

  除了該表結構,我們換可以改變值,如

FOR user IN users
  RETURN CONCAT(user.name, "'s age is ", user.age)

  這里的CONCAT是用來連接字符串的,這樣我們得到的結果是:

[
  "James Hendrix's age is 69",
  "John Smith's age is 32",
  "Katie Foster's age is 40"
]

  小的實驗,

返回所有的用戶配對,除了自己和自己配對

FOR user1 IN users
  FOR user2 IN users
    FILTER user1!=user2
    RETURN [user1.name,user2.name]

  我們還可以計算兩個人的年齡和

FOR user1 IN users
  FOR user2 IN users
    FILTER user1!=user2
    RETURN {pairs:[user1.name,user2.name],
            sumofages:user1.age+user2.age}

  如果我們僅想要兩個年齡和小於80的人,我們可以使用LET 來定義一個臨時變量

FOR user1 IN users
  FOR user2 IN users
    FILTER user1!=user2
    LET sumofages = user1.age+user2.age
    FILTER sumofages<80
    RETURN {pairs:[user1.name,user2.name],
            sumofages}

  注意這里的sumofages由於鍵值名稱都為sumofages,可以簡寫。與js相同。

刪除用戶,使用REMOVE

REMOVE "9883" IN users

  當然我們也可以采用循環刪除的方式,刪除年齡大於30的用戶。

FOR user IN users
    FILTER user.age >= 30
    REMOVE user IN users

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM