ArangoDB

1. Windows环境安装

根据官网地址去下载安装ArangoDB:Download ArangoDB for Windows

傻瓜式安装即可,这里要创建登录用的,安装成功后会在Windows桌面创建快捷方式

操作方式可分为Shell和Interface,Interface可单击快捷方式打开也可以在浏览器中输入localhost:8529进入,初始化Username为root

  • Shell
  • Interface

2. AQL基础
基本CRUD操作:

创建文档CREATE

SQL
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()的帮助下:

SQL
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()函数还允许您一次获取多个文档:

SQL
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

更新是否存在属性状态

SQL
UPDATE "2861650" WITH { alive: false } IN Characters

//-----语法是:UPDATE documentKey WITH object IN collectionName

它列出的属性更新指定的文档,但是保持其余不变。

这也适用于循环。例如:向所有文档添加一个新属性

SQL
FOR c IN Characters
  UPDATE c WITH { season: 1 } IN Characters

要替换整个文档内容,可以使用REPLACE。

SQL
REPLACE "2861650" WITH {
  name: "Ned",
  surname: "Stark",
  alive: false,
  age: 41,
  traits: ["A","H","C","N","P"]
} IN Characters

删除文档DELETE

要从集合中完全删除文档,可以使用REMOVE操作。

它的工作原理与其他修改操作类似,但没有WITH子句

SQL
REMOVE "2861650" IN Characters

它也可以在循环体中使用,以有效地截断集合。

SQL
FOR c IN Characters
  REMOVE c IN Characters

3. C#/.NET 驱动程序

第一步:

安装ArangoDBNetStandard NuGet包

第二步:

连接到ArangoDB

ArangoDB C#/.NET驱动程序使用IApiClientTransport接口来允许提供您自己的传输实现。

ArangoDB支持Basic Auth和Json Web Token。

基本认证:

C#
var transport = HttpApiTransport.UsingBasicAuth(
    new Uri("http://localhost:8529/"),
    dbName,
    "username",
    "password");

JSON WEB TOKEN:

C#
var transport = HttpApiTransport.UsingJwtAuth(
    new Uri("http://localhost:8529/"),
    dbName,
    jwtTokenString);

第三步:

操作数据库

C#
// 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");
        
        
    }
}

第四步:

操作集合

C#
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");
        
        
    }
}

第五步:

操作文档

C#

    //创建文档
    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}");
    
    
订阅评论
提醒
0 评论
最旧
最新 最多投票
内联反馈
查看所有评论
滚动至顶部