1. Windows环境安装
根据官网地址去下载安装ArangoDB:Download ArangoDB for Windows
![](https://ichiblog.cn/wp-content/uploads/2025/01/图片-3-1024x609.png)
傻瓜式安装即可,这里要创建登录用的,安装成功后会在Windows桌面创建快捷方式
![](https://ichiblog.cn/wp-content/uploads/2025/01/图片-8.png)
操作方式可分为Shell和Interface,Interface可单击快捷方式打开也可以在浏览器中输入localhost:8529进入,初始化Username为root
- Shell
![](https://ichiblog.cn/wp-content/uploads/2025/01/图片-6-1024x521.png)
- Interface
![](https://ichiblog.cn/wp-content/uploads/2025/01/图片-7-1024x488.png)
2. AQL基础
基本CRUD操作:
创建文档CREATE
INSERT {
"name": "Robert",
"surname": "Baratheon",
"alive": false,
"traits": ["A","H","C"]
} INTO Characters
INSERT {
"name": "Jaime",
"surname": "Lannister",
"alive": true,
"age": 36,
"traits": ["A","F","B"]
} INTO Characters
查询文档READ
系统会默认添加三个属性。
每个Document都有一个唯一的_key、_id、_rev,它们分别是唯一标识、唯一计算属性、唯一系统修订ID
文档keys可以由用户在创建文档时提供,或者自动分配唯一值。
以后不能再改了。以下划线_开头的所有三个系统属性都是只读的。
我们可以使用文档Key或文档ID来查找指定的Document,在AQL函数DOCUMENT()的帮助下:
RETURN DOCUMENT("Characters", "2861650")
// --- or ---
RETURN DOCUMENT("Characters/2861650")
// -----查询结果------
[
{
"_key": "2861650",
"_id": "Characters/2861650",
"_rev": "_V1bzsXa---",
"name": "Ned",
"surname": "Stark",
"alive": true,
"age": 41,
"traits": ["A","H","C","N","P"]
}
]
DOCUMENT()函数还允许您一次获取多个文档:
RETURN DOCUMENT("Characters", ["2861650", "2861653"])
// --- or ---
RETURN DOCUMENT(["Characters/2861650", "Characters/2861653"])
//-----查询结果-----
[
[
{
"_key": "2861650",
"_id": "Characters/2861650",
"_rev": "_V1bzsXa---",
"name": "Ned",
"surname": "Stark",
"alive": true,
"age": 41,
"traits": ["A","H","C","N","P"]
},
{
"_key": "2861653",
"_id": "Characters/2861653",
"_rev": "_V1bzsXa--B",
"name": "Catelyn",
"surname": "Stark",
"alive": false,
"age": 40,
"traits": ["D","H","C"]
}
]
]
更新文档UPDATE
更新是否存在属性状态
UPDATE "2861650" WITH { alive: false } IN Characters
//-----语法是:UPDATE documentKey WITH object IN collectionName
它列出的属性更新指定的文档,但是保持其余不变。
这也适用于循环。例如:向所有文档添加一个新属性
FOR c IN Characters
UPDATE c WITH { season: 1 } IN Characters
要替换整个文档内容,可以使用REPLACE。
REPLACE "2861650" WITH {
name: "Ned",
surname: "Stark",
alive: false,
age: 41,
traits: ["A","H","C","N","P"]
} IN Characters
删除文档DELETE
要从集合中完全删除文档,可以使用REMOVE操作。
它的工作原理与其他修改操作类似,但没有WITH子句
REMOVE "2861650" IN Characters
它也可以在循环体中使用,以有效地截断集合。
FOR c IN Characters
REMOVE c IN Characters
3. C#/.NET 驱动程序
第一步:
安装ArangoDBNetStandard NuGet包
![](https://ichiblog.cn/wp-content/uploads/2025/01/图片-13-1024x485.png)
第二步:
连接到ArangoDB
ArangoDB C#/.NET驱动程序使用IApiClientTransport接口来允许提供您自己的传输实现。
ArangoDB支持Basic Auth和Json Web Token。
基本认证:
var transport = HttpApiTransport.UsingBasicAuth(
new Uri("http://localhost:8529/"),
dbName,
"username",
"password");
JSON WEB TOKEN:
var transport = HttpApiTransport.UsingJwtAuth(
new Uri("http://localhost:8529/"),
dbName,
jwtTokenString);
第三步:
操作数据库
// Initiate the transport
using (var transport = HttpApiTransport.UsingBasicAuth(new Uri(url), dbName, username, password))
{
// Initiate ArangoDBClient using the transport
using (var db = new ArangoDBClient(transport))
{
var response = await db.Database.GetCurrentDatabaseInfoAsync();
var dbInfo = response.Result; // Provides information about the current database
//浏览所有数据列表
var response = await db.Database.GetDatabasesAsync();
//创建数据库
var body = new DatabaseApi.Models.PostDatabaseBody()
{
Name = "newdb1",
Users = new List<DatabaseApi.Models.DatabaseUser>()
{
new DatabaseApi.Models.DatabaseUser()
{
Username="usr1",
Passwd ="pwd1",
Active=true
}
}
};
// Create the new database
var response = await db.Database.PostDatabaseAsync(body);
//删除数据库
var response = await db.Database.DeleteDatabaseAsync("newdb1");
}
}
第四步:
操作集合
using (var transport = HttpApiTransport.UsingBasicAuth(new Uri(url), dbName, username, password))
{
using (var db = new ArangoDBClient(transport))
{
// 获取集合
var response = await db.Collection.GetCollectionsAsync();
//创建集合
var body = new CollectionApi.Models.PostCollectionBody()
{
Type = CollectionApi.Models.CollectionType.Document,
Name = "MyCollection"
};
var response = await db.Collection.PostCollectionAsync(body, null);
//删除集合
var response = await db.Collection.DeleteCollectionAsync("MyCollection");
}
}
第五步:
操作文档
//创建文档
await db.Document.PostDocumentAsync(
"MyCollection",
new
{
MyProperty = "Value"
});
//更新文档
await db.Document.PatchDocumentAsync<object, object>(
"MyCollection",
item._key,
new { Description = "More description" });
//替换文档
await db.Document.PutDocumentAsync(
$"MyCollection/{item._key}",
item);
//删除文档
await db.Document.DeleteDocumentAsync($"MyCollection/{item._key}");