最近做一个项目要用到ArangoDb,一搜发现连中文文档都没有,所以一边看官网上英文文档,一边做下总结。
首先对几个关键词要有个大概的了解:
AQL:arangodb query language,arangodb的查询语言,可与类似于SQL。
Collections:有Docunment和Edge两种类型,这个可以类似于Oracle上的表,AQL不能操作Collections
Document:可以类似于Oracle上表中的一条记录,
Edge:可以类似于Oracle上表中的一条记录,跟Document不同的是,这个存储的是Document之间的关系。
----------------------------------------------分割线------------------------------------------------
对于一个数据库来说,主要的功能也就是对数据的增删改查,对于arangodb来说也是一样。
以AQL tutorial章节里面新建的Characters为例,来总结一下增删改查的用法
新增:
INSERT {
"name": "Ned",
"surname": "Stark",
"alive": true,
"age": 41,
"traits": ["A","H","C","N","P"]
} INTO Characters
跟Oracle一样,insert是用来插记录的,大括号里面这个json对象(key-value键值对)就是document,也就是要插入的数据,
跟oracle不同的地方,oracle里每一行的key(也就是列头)都是相同的,而arangodb很明显可以不同。
另外新增完,会多出三个属性(_id, _rev, _key),其中_key可以在新增的时候指定,不指定的话会默认生成一个,主要用来保证document的唯一性(例如:347),_id是Collections的名字和_key的组合(例如:Characters/347),_rev理解为系统管理的版本(revision Id)。
修改:
UPDATE "2861650" WITH { alive: false } IN Characters
REPLACE "2861650" WITH {
name: "Ned",
surname: "Stark",
alive: false,
age: 41,
traits: ["A","H","C","N","P"]
} IN Characters
update关键词作用是修改,原document里有的属性修改,没有的就新增
replace关键词作用是替换,用新的documnet替换原来的document
删除:
REMOVE "2861650" IN Characters
删除就没有什么好说的,"2861650"是documnet的_key值。
查询:
RETURN DOCUMENT("Characters", "2861650")
RETURN DOCUMENT("Characters", ["2861650", "2861653"])
RETURN DOCUMENT(["Characters/2861650", "Characters/2861653"])
FOR c IN Characters
RETURN c
Document函数可以用来查询指定collectionName和_key的记录
也可以用for循环来返回collection里面所有的记录