Using Java driver to operate ArangoDB

I have mentioned before how to use ArangoDB's Web, Shell and Restful API to operate the database. Today we will take a look at how to use the Java language to operate the ArangoDB database.

First create a Maven project and add the ArangoDB Java driver library

		<dependency>
			<groupId>com.arangodb</groupId>
			<artifactId>arangodb-java-driver</artifactId>
			<version>6.5.0</version>
		</dependency>

The complete pom.xml file content is as follows:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
		 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>my.arangodbstudy</groupId>
	<artifactId>arangodbstudy</artifactId>
	<packaging>jar</packaging>
	<version>1.0-SNAPSHOT</version>
	<name>arangodbstudy</name>
	<url>http://maven.apache.org</url>

	<dependencies>
		<dependency>
			<groupId>com.arangodb</groupId>
			<artifactId>arangodb-java-driver</artifactId>
			<version>6.5.0</version>
		</dependency>
		
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>3.8.1</version>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<configuration>
					<source>8</source>
					<target>8</target>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>

A simple Java class is written below, which contains some common operations, such as: creating/closing connections, database operations, collection operations and document operations, etc.

package my.arangodbstudy;

import com.arangodb.ArangoCollection;
import com.arangodb.ArangoDB;
import com.arangodb.ArangoDatabase;
import com.arangodb.entity.BaseDocument;
import com.arangodb.entity.CollectionEntity;
import com.arangodb.entity.DocumentCreateEntity;

import java.util.Collection;

public class SimpleTest {
    
    

	private static final String DB_HOST = "localhost";
	private static final int DB_PORT = 8529;
	private static final String DB_USERNAME = "root";
	private static final String DB_PASSWORD = "<password>";
	private static final String DB_NAME = "mydb";
	private static final String COLLECTION_NAME = "users";

	public static void main(String[] args) {
    
    
		// 构造ArangoDB实例
		ArangoDB arangoDB = new ArangoDB.Builder()
				.host(DB_HOST, DB_PORT)
				.user(DB_USERNAME)
				.password(DB_PASSWORD)
				.build();

		// 判断数据库存在,如果存在删除
		if (arangoDB.db(DB_NAME).exists()) {
    
    
			arangoDB.db(DB_NAME).drop();
		}

		// 创建数据库
		arangoDB.createDatabase(DB_NAME);
		System.out.println("arangodb databases: " + arangoDB.getDatabases());

		// 获取刚才创建的数据库
		ArangoDatabase db = arangoDB.db(DB_NAME);

		// 迭代打印数据库中的集合
		Collection<CollectionEntity> collectionEntities = db.getCollections();
		for (CollectionEntity collectionEntity: collectionEntities) {
    
    
			System.out.println(collectionEntity.getName());
		}

		// 创建集合
		CollectionEntity collectionEntity = db.createCollection(COLLECTION_NAME);
		System.out.println("collection name: " + collectionEntity.getName());

		// 获取创建的集合
		ArangoCollection collection = db.collection(COLLECTION_NAME);

		// 创建文档对象
		BaseDocument document = new BaseDocument();
		document.addAttribute("name", "user");
		document.addAttribute("age", 10);
		document.addAttribute("sex", 1);

		// 写入数据
		DocumentCreateEntity documentCreateEntity = collection.insertDocument(document);
		System.out.println("collection count: " + collection.count().getCount());

		// 查询
		document = collection.getDocument(documentCreateEntity.getKey(), BaseDocument.class);
		System.out.println("document: " + document);

		// 更新文档
		document.updateAttribute("sex", 0);
		collection.updateDocument(documentCreateEntity.getKey(), document);
		document = collection.getDocument(documentCreateEntity.getKey(), BaseDocument.class);
		System.out.println("document: " + document);

		// 删除文档
		collection.deleteDocument(documentCreateEntity.getKey());
		document = collection.getDocument(documentCreateEntity.getKey(), BaseDocument.class);
		System.out.println("document: " + document);

		// 删除集合
		collection.drop();

		// 删除数据库
		db.drop();

		// shutdown ArangoDB
		arangoDB.shutdown();
	}
}

In addition, in ArangoDB, you can also use AQL to perform some query operations to obtain the required collections, such as:

package my.arangodbstudy;

import com.arangodb.ArangoCollection;
import com.arangodb.ArangoCursor;
import com.arangodb.ArangoDB;
import com.arangodb.ArangoDatabase;
import com.arangodb.entity.BaseDocument;
import com.arangodb.entity.CollectionEntity;
import com.arangodb.entity.DocumentCreateEntity;
import com.arangodb.util.MapBuilder;

import java.util.Collection;
import java.util.Map;

public class SimpleAQLTest {
    
    

	private static final String DB_HOST = "localhost";
	private static final int DB_PORT = 8529;
	private static final String DB_USERNAME = "root";
	private static final String DB_PASSWORD = "<password>";
	private static final String DB_NAME = "mydb";
	private static final String COLLECTION_NAME = "users";

	public static void main(String[] args) {
    
    
		// 构造ArangoDB实例
		ArangoDB arangoDB = new ArangoDB.Builder()
				.host(DB_HOST, DB_PORT)
				.user(DB_USERNAME)
				.password(DB_PASSWORD)
				.build();

		// 判断数据库存在,如果存在删除
		if (arangoDB.db(DB_NAME).exists()) {
    
    
			arangoDB.db(DB_NAME).drop();
		}

		// 创建数据库
		arangoDB.createDatabase(DB_NAME);
		System.out.println("arangodb databases: " + arangoDB.getDatabases());

		// 获取刚才创建的数据库
		ArangoDatabase db = arangoDB.db(DB_NAME);

		// 创建集合
		CollectionEntity collectionEntity = db.createCollection(COLLECTION_NAME);
		System.out.println("collection name: " + collectionEntity.getName());

		// 获取创建的集合
		ArangoCollection collection = db.collection(COLLECTION_NAME);

		// 创建文档对象并写入
		for (int i = 0; i < 10; i++) {
    
    
			BaseDocument document = new BaseDocument();
			document.addAttribute("name", "user_" + i);
			document.addAttribute("age", 10 + i);
			document.addAttribute("sex", 1);
			collection.insertDocument(document);
		}
		System.out.println("collection count: " + collection.count().getCount());

		// 使用AQL查询文档
		String query = "FOR user IN " + COLLECTION_NAME +
				" FILTER user.name == @name || user.age >= @age " +
				" RETURN user";
		Map<String, Object> params = new MapBuilder()
				.put("name", "user_0")
				.put("age", 15)
				.get();
		ArangoCursor<BaseDocument> cursor = db.query(query, params, null, BaseDocument.class);
		cursor.forEachRemaining(document -> {
    
    
			System.out.println("document: " + document);
		});

		// 删除集合
		collection.drop();

		// 删除数据库
		db.drop();

		// shutdown ArangoDB
		arangoDB.shutdown();
	}
}

Guess you like

Origin blog.csdn.net/kongxx/article/details/104130224