国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

怎么靈活使用Graph, Document, Key/Value 三種混合模型的數據庫?--Java

svtter / 1456人閱讀

摘要:請注意本教程是針對版本編寫的,有可能不支持舊版本。在本教程的過程中,將使用代碼中給出的每個。任何對象都可以作為文檔添加到數據庫中,并作為對象從數據庫中檢索。這個例子中,我們使用驅動程序提供的類。

這是一個關于如何用Java Sync Driver 4.1使用ArangoDB的簡短教程。在不到10分鐘的時間內,您將學會如何用Java 操作ArangoDB (ArangoDB on Github)。有關驅動程序的功能和性能的更多細節,請查看相應的博客文章。
*請注意: 本教程是針對 ArangoDB 3.1版本編寫的,有可能不支持舊版本。
如果您使用的是舊版本的ArangoDB,請查看為舊版本設計的Java教程。*

安裝Java驅動程序
本教程將在Eclipse中介紹Java驅動程序的用法。首先,通過maven將Java驅動程序添加到您的項目中:

1
2
3  
4    com.arangodb
5    arangodb-java-driver
6    4.1.0
7  
8    ....

使用eclipse,您需要執行以下步驟:

首先 file,然后 new 然后點擊 other
選擇 Maven Project
選擇工作區位置
選擇默認的原型
最后選擇一個Group id (mydb) 和一個Artifact id (firstProject) 然后點擊完成
現在打開 pom.xml, 在標簽 dependencies 然后點擊添加
現在我們填寫groupID (com.arangodb), artifactID(arangodb-java-driver) and version(4.0.0)

注意: 確保安裝并運行ArangoDB 3.1或更高版本。

快速開始

創建一個名為 FirstProject 的文件并寫入:

   1 
   2 package mydb.firstproject;
   3  
   4 import java.util.Map;
   5  
   6 import com.arangodb.ArangoCollection;
   7 import com.arangodb.ArangoCursor;
   8 import com.arangodb.ArangoDB;
   9 import com.arangodb.ArangoDBException;
  10 import com.arangodb.entity.BaseDocument;
  11 import com.arangodb.entity.CollectionEntity;
  12 import com.arangodb.util.MapBuilder;
  13 import com.arangodb.velocypack.VPackSlice;
  14 import com.arangodb.velocypack.exception.VPackException;
  15   
  16 public class FirstProject {
  17   public static void main(final String[] args) {
  18   
  19   }
    }
    
    

在eclipse中,您需要創建一個名為 FirstProject的新類,并將代碼復制到其中。在本教程的過程中,將使用代碼中給出的每個 import

連接

配置和打開連接以啟動ArangoDB。

1  ArangoDB arangoDB = new ArangoDB.Builder().build();

提示: 原始連接為 http://127.0.0.1:8529.

創建數據庫

我們來創建一個新的數據庫:

1
2   String dbName = "mydb";
3    try {
4     arangoDB.createDatabase(dbName);
5     System.out.println("Database created: " + dbName);
6  
  } catch (ArangoDBException e) {
7      System.err.println("Failed to create database: " + dbName + "; " + e.getMessage());
    }

結果是應該是:

Database created: mydb


創建一個集合

現在讓我們來創建我們的第一個集合:

1
2 String collectionName = "firstCollection";
3 try {
4  CollectionEntity myArangoCollection = arangoDB.db(dbName).createCollection(collectionName);
5  System.out.println("Collection created: " + myArangoCollection.getName());
6 } catch (ArangoDBException e) {
7  System.err.println("Failed to create collection: " + collectionName + "; " + e.getMessage());
  }
  

結果是應該是:

1 Collection created: firstCollection

您應該了解的一些細節代碼:

createCollection()創建集合

firstCollection 是集合的名字

創建文檔

現在我們在集合中創建一個文檔。任何對象都可以作為文檔添加到數據庫中,并作為對象從數據庫中檢索。

這個例子中,我們使用驅動程序提供的BaseDocument類。文檔的屬性存儲在映射中,作為/值 對:

1
2 BaseDocument myObject = new BaseDocument();
3 myObject.setKey("myKey");
4 myObject.addAttribute("a", "Foo");
5 myObject.addAttribute("b", 42);
6 try {
7   arangoDB.db(dbName).collection(collectionName).insertDocument(myObject);
8   System.out.println("Document created");
9 } catch (ArangoDBException e) {
10  System.err.println("Failed to create document. " + e.getMessage());

結果應該是:

1 Document created

您應該了解的一些細節代碼:

setKey() 設置新對象的鍵值

addAttribute() 將一個新的鍵/值對放在對象中

每個屬性作為單個鍵/值對存儲在文檔根目錄中

閱讀文檔

閱讀創建的文檔:

  1
  2 try {
  3  BaseDocument myDocument = arangoDB.db(dbName).collection(collectionName).getDocument("myKey",
  4      BaseDocument.class);
  5  System.out.println("Key: " + myDocument.getKey());
  6  System.out.println("Attribute a: " + myDocument.getAttribute("a"));
  7  System.out.println("Attribute b: " + myDocument.getAttribute("b"));
  8 } catch (ArangoDBException e) {
  9   System.err.println("Failed to get document: myKey; " + e.getMessage());
   }

結果應該是:

1
2 Key: myKey
3 Attribute a: Foo
  Attribute b: 42

您應該了解的一些細節代碼:

getDocument() 將存儲的文檔數據返回到給定的JavaBean (BaseDocument)

閱讀VelocyPack 格式文檔

您也可以閱讀VelocyPack 格式文檔:

1
2 try {
3   VPackSlice myDocument = arangoDB.db(dbName).collection(collectionName).getDocument("myKey",
4    VPackSlice.class);
5  System.out.println("Key: " + myDocument.get("_key").getAsString());
6  System.out.println("Attribute a: " + myDocument.get("a").getAsString());
7  System.out.println("Attribute b: " + myDocument.get("b").getAsInt());
8 } catch (ArangoDBException | VPackException e) {
9   System.err.println("Failed to get document: myKey; " + e.getMessage());
}

您應該了解的一些細節代碼:

getDocument() 將存儲的文檔數據返回到 VelocyPack 格式 (VPackSlice)

更新文檔
1
2 myObject.addAttribute("c", "Bar");
3 try {
4  arangoDB.db(dbName).collection(collectionName).updateDocument("myKey", myObject);
5 } catch (ArangoDBException e) {
6  System.err.println("Failed to update document. " + e.getMessage());
}

再次閱讀文件

我們再次閱讀文件:

1
2 try {
3   BaseDocument myUpdatedDocument = arangoDB.db(dbName).collection(collectionName).getDocument("myKey",
4      BaseDocument.class);
5   System.out.println("Key: " + myUpdatedDocument.getKey());
6   System.out.println("Attribute a: " + myUpdatedDocument.getAttribute("a"));
7   System.out.println("Attribute b: " + myUpdatedDocument.getAttribute("b"));
8   System.out.println("Attribute c: " + myUpdatedDocument.getAttribute("c"));
9 } catch (ArangoDBException e) {
10  System.err.println("Failed to get document: myKey; " + e.getMessage());
  }

結果應該是:

1
2 Key: myKey
3 Attribute a: Foo
4 Attribute b: 42
 Attribute c: Bar 
刪除文檔

讓我們來刪除一個文檔:

1 
2 try {
3   arangoDB.db(dbName).collection(collectionName).deleteDocument("myKey");
4 } catch (ArangoDBException e) {
5   System.err.println("Failed to delete document. " + e.getMessage());
}

執行AQL查詢

首先我們需要在集合firstCollection中創建一些名稱為Homer的文檔:

1
2 ArangoCollection collection = arangoDB.db(dbName).collection(collectionName);
3 for (int i = 0; i < 10; i++) {
4   BaseDocument value = new BaseDocument();
5  value.setKey(String.valueOf(i));
6  value.addAttribute("name", "Homer");
7  collection.insertDocument(value);
 }

從集合firstCollection中獲取所有名稱為Homer 的文檔,并且遍歷存儲結果:

 
try {
  String query = "FOR t IN firstCollection FILTER t.name == @name RETURN t";
  Map bindVars = new MapBuilder().put("name", "Homer").get();
  ArangoCursor cursor = arangoDB.db(dbName).query(query, bindVars, null,
      BaseDocument.class);
  cursor.forEachRemaining(aDocument -> {
    System.out.println("Key: " + aDocument.getKey());
  });
} catch (ArangoDBException e) {
  System.err.println("Failed to execute query. " + e.getMessage());
}

結果應該是:

Key: 1
Key: 0
Key: 5
Key: 3
Key: 4
Key: 9
Key: 2
Key: 7
Key: 8
Key: 6 

您應該了解的一些細節代碼:

AQL 查詢語法使用占位符@name 其必須被綁定到一個值

query() 執行定義的查詢并返回一個具有給定類的ArangoCursor (這里: BaseDocument)

順序不能保證

使用AQL刪除文檔

現在我們將刪除之前創建的文檔:

try {
  String query = "FOR t IN firstCollection FILTER t.name == @name "
          + "REMOVE t IN firstCollection LET removed = OLD RETURN removed";
  Map bindVars = new MapBuilder().put("name", "Homer").get();
  ArangoCursor cursor = arangoDB.db(dbName).query(query, bindVars, null,
      BaseDocument.class);
  cursor.forEachRemaining(aDocument -> {
    System.out.println("Removed document " + aDocument.getKey());
  });
} catch (ArangoDBException e) {
  System.err.println("Failed to execute query. " + e.getMessage());
}

結果應該是:

Removed document: 1
Removed document: 0
Removed document: 5
Removed document: 3
Removed document: 4
Removed document: 9
Removed document: 2
Removed document: 7
Removed document: 8
Removed document: 6

學習更多

查看AQL 文檔,進一步學習我們的查詢語言。

想更多地了解我們的數據庫嗎點擊這里!

閱讀關于Collections的更多信息。

在我們的文檔中瀏覽更多關于Documents的信息。

相關更多示例,您可以瀏覽ArangoDB 菜譜。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/83872.html

相關文章

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<