摘要:請(qǐng)注意本教程是針對(duì)版本編寫的,有可能不支持舊版本。在本教程的過(guò)程中,將使用代碼中給出的每個(gè)。任何對(duì)象都可以作為文檔添加到數(shù)據(jù)庫(kù)中,并作為對(duì)象從數(shù)據(jù)庫(kù)中檢索。這個(gè)例子中,我們使用驅(qū)動(dòng)程序提供的類。
這是一個(gè)關(guān)于如何用Java Sync Driver 4.1使用ArangoDB的簡(jiǎn)短教程。在不到10分鐘的時(shí)間內(nèi),您將學(xué)會(huì)如何用Java 操作ArangoDB (ArangoDB on Github)。有關(guān)驅(qū)動(dòng)程序的功能和性能的更多細(xì)節(jié),請(qǐng)查看相應(yīng)的博客文章。
*請(qǐng)注意: 本教程是針對(duì) ArangoDB 3.1版本編寫的,有可能不支持舊版本。
如果您使用的是舊版本的ArangoDB,請(qǐng)查看為舊版本設(shè)計(jì)的Java教程。*
安裝Java驅(qū)動(dòng)程序
本教程將在Eclipse中介紹Java驅(qū)動(dòng)程序的用法。首先,通過(guò)maven將Java驅(qū)動(dòng)程序添加到您的項(xiàng)目中:
1 23 4 8 ....com.arangodb 5arangodb-java-driver 64.1.0 7
使用eclipse,您需要執(zhí)行以下步驟:
首先 file,然后 new 然后點(diǎn)擊 other
選擇 Maven Project
選擇工作區(qū)位置
選擇默認(rèn)的原型
最后選擇一個(gè)Group id (mydb) 和一個(gè)Artifact id (firstProject) 然后點(diǎn)擊完成
現(xiàn)在打開(kāi) pom.xml, 在標(biāo)簽 dependencies 然后點(diǎn)擊添加
現(xiàn)在我們填寫groupID (com.arangodb), artifactID(arangodb-java-driver) and version(4.0.0)
注意: 確保安裝并運(yùn)行ArangoDB 3.1或更高版本。
快速開(kāi)始創(chuàng)建一個(gè)名為 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中,您需要?jiǎng)?chuàng)建一個(gè)名為 FirstProject的新類,并將代碼復(fù)制到其中。在本教程的過(guò)程中,將使用代碼中給出的每個(gè) import。
連接配置和打開(kāi)連接以啟動(dòng)ArangoDB。
1 ArangoDB arangoDB = new ArangoDB.Builder().build();
提示: 原始連接為 http://127.0.0.1:8529.
創(chuàng)建數(shù)據(jù)庫(kù)我們來(lái)創(chuàng)建一個(gè)新的數(shù)據(jù)庫(kù):
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()); }
結(jié)果是應(yīng)該是:
Database created: mydb創(chuàng)建一個(gè)集合
現(xiàn)在讓我們來(lái)創(chuàng)建我們的第一個(gè)集合:
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()); }
結(jié)果是應(yīng)該是:
1 Collection created: firstCollection
您應(yīng)該了解的一些細(xì)節(jié)代碼:
createCollection()創(chuàng)建集合
firstCollection 是集合的名字
創(chuàng)建文檔現(xiàn)在我們?cè)诩现袆?chuàng)建一個(gè)文檔。任何對(duì)象都可以作為文檔添加到數(shù)據(jù)庫(kù)中,并作為對(duì)象從數(shù)據(jù)庫(kù)中檢索。
這個(gè)例子中,我們使用驅(qū)動(dòng)程序提供的BaseDocument類。文檔的屬性存儲(chǔ)在映射中,作為鍵
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());
結(jié)果應(yīng)該是:
1 Document created
您應(yīng)該了解的一些細(xì)節(jié)代碼:
setKey() 設(shè)置新對(duì)象的鍵值
addAttribute() 將一個(gè)新的鍵/值對(duì)放在對(duì)象中
每個(gè)屬性作為單個(gè)鍵/值對(duì)存儲(chǔ)在文檔根目錄中
閱讀文檔閱讀創(chuàng)建的文檔:
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()); }
結(jié)果應(yīng)該是:
1 2 Key: myKey 3 Attribute a: Foo Attribute b: 42
您應(yīng)該了解的一些細(xì)節(jié)代碼:
getDocument() 將存儲(chǔ)的文檔數(shù)據(jù)返回到給定的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()); }
您應(yīng)該了解的一些細(xì)節(jié)代碼:
getDocument() 將存儲(chǔ)的文檔數(shù)據(jù)返回到 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()); }再次閱讀文件
我們?cè)俅伍喿x文件:
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()); }
結(jié)果應(yīng)該是:
1 2 Key: myKey 3 Attribute a: Foo 4 Attribute b: 42 Attribute c: Bar刪除文檔
讓我們來(lái)刪除一個(gè)文檔:
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()); }執(zhí)行AQL查詢
首先我們需要在集合firstCollection中創(chuàng)建一些名稱為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 的文檔,并且遍歷存儲(chǔ)結(jié)果:
try { String query = "FOR t IN firstCollection FILTER t.name == @name RETURN t"; MapbindVars = 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()); }
結(jié)果應(yīng)該是:
Key: 1 Key: 0 Key: 5 Key: 3 Key: 4 Key: 9 Key: 2 Key: 7 Key: 8 Key: 6
您應(yīng)該了解的一些細(xì)節(jié)代碼:
AQL 查詢語(yǔ)法使用占位符@name 其必須被綁定到一個(gè)值
query() 執(zhí)行定義的查詢并返回一個(gè)具有給定類的ArangoCursor (這里: BaseDocument)
順序不能保證
使用AQL刪除文檔現(xiàn)在我們將刪除之前創(chuàng)建的文檔:
try { String query = "FOR t IN firstCollection FILTER t.name == @name " + "REMOVE t IN firstCollection LET removed = OLD RETURN removed"; MapbindVars = 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()); }
結(jié)果應(yīng)該是:
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學(xué)習(xí)更多
查看AQL 文檔,進(jìn)一步學(xué)習(xí)我們的查詢語(yǔ)言。
想更多地了解我們的數(shù)據(jù)庫(kù)嗎點(diǎn)擊這里!
閱讀關(guān)于Collections的更多信息。
在我們的文檔中瀏覽更多關(guān)于Documents的信息。
相關(guān)更多示例,您可以瀏覽ArangoDB 菜譜。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/83872.html
摘要:請(qǐng)注意本教程是針對(duì)版本編寫的,有可能不支持舊版本。在本教程的過(guò)程中,將使用代碼中給出的每個(gè)。任何對(duì)象都可以作為文檔添加到數(shù)據(jù)庫(kù)中,并作為對(duì)象從數(shù)據(jù)庫(kù)中檢索。這個(gè)例子中,我們使用驅(qū)動(dòng)程序提供的類。 這是一個(gè)關(guān)于如何用Java Sync Driver 4.1使用ArangoDB的簡(jiǎn)短教程。在不到10分鐘的時(shí)間內(nèi),您將學(xué)會(huì)如何用Java 操作ArangoDB (ArangoDB on Git...
摘要: Editor’s note: Full disclosure — the author is a developer and software architect at ArangoDB GmbH, which leads the development of the open source multi-model database ArangoDB. In recent years...
摘要: Editor’s note: Full disclosure — the author is a developer and software architect at ArangoDB GmbH, which leads the development of the open source multi-model database ArangoDB. In recent years...
閱讀 3707·2021-11-11 10:58
閱讀 2490·2021-09-22 15:43
閱讀 2878·2019-08-30 15:44
閱讀 2201·2019-08-30 13:08
閱讀 1831·2019-08-29 17:28
閱讀 894·2019-08-29 10:54
閱讀 686·2019-08-26 11:46
閱讀 3515·2019-08-26 11:43