ArangoDB数据库——CRUD

本文详细介绍了如何使用AQL进行数据库操作,包括数据的插入、查询、更新和删除。通过具体示例,展示了单条和批量插入数据的方法,以及如何使用循环和函数查询数据。此外,还介绍了如何更新和删除数据。

插入数据

语法是 INSERT document INTO collectionName。

document是一个对象,它由属性键和值对组成。AQL中属性键的引号是可选的。键总是字符序列(字符串),而属性值可以有不同的类型:

null / boolean (true, false) / number (integer and floating point) / string / array /object

collectionName为colletcion名称。

单条数据插入

INSERT {

"name": "Ned",

"surname": "Stark",

"alive": true,

"age": 41,

"traits": ["A","H","C","N","P"]

} INTO Characters

批量插入

LET data = [

{ "name": "Robert", "surname": "Baratheon", "alive": false, "traits": ["A","H","C"] },

{ "name": "Jaime", "surname": "Lannister", "alive": true, "age": 36, "traits": ["A","F","B"] },

{ "name": "Catelyn", "surname": "Stark", "alive": false, "age": 40, "traits": ["D","H","C"] },

{ "name": "Cersei", "surname": "Lannister", "alive": true, "age": 36, "traits": ["H","E","F"] },

{ "name": "Daenerys", "surname": "Targaryen", "alive": true, "age": 16, "traits": ["D","H","C"] },

{ "name": "Jorah", "surname": "Mormont", "alive": false, "traits": ["A","B","C","F"] }]

FOR d IN data

INSERT d INTO Characters

查询数据

一、查询collection中所有的记录

我们可以使用循环来检索它们。

FOR c IN Characters

RETURN c

循环的语法是FOR variableName IN collectionName。对于集合中的每个文档,c都被分配一个文档,然后按照循环体返回。该查询返回我们先前存储的所有字符。

类似于这个例子:

{

"_key": "2861650",

"_id": "Characters/2861650",

"_rev": "_V1bzsXa---",

"name": "Ned",

"surname": "Stark",

"alive": true,

"age": 41,

"traits": ["A","H","C","N","P"]

},

该文档具有我们存储的五个属性,另外还有三个由数据库系统添加的属性。每个文档都需要一个唯一的_key标识,以便在集合中标识它。这_id是一个计算属性,集合名称,正斜杠/和文档键的串联。它唯一地标识数据库中的文档。_rev是由系统管理的修订版本ID。以下划线开头的所有三个系统属性_都是只读的。

二、使用文档键或文档ID来检索特定的文档

借助AQL函数,我们可以使用文档键或文档ID来检索特定的文档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 documentKey WITH object IN collectionName。它使用列出的属性更新指定的文档(或者如果它们不存在,则添加它们),但保持其余不变。

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

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

REPLACE "2861650" WITH {

name: "Ned",

surname: "Stark",

alive: false,

age: 41,

traits: ["A","H","C","N","P"]

} IN Characters

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

FOR c IN Characters

UPDATE c WITH { season: 1 } IN Characters

删除数据

要完全删除集合中的文档,请执行此REMOVE操作。

REMOVE "2861650" IN Characters

它也可以用在循环体中以有效截断集合:

FOR c IN Characters

REMOVE c IN Characters

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程大虾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值