arangoDB之AQL语句常用操作

官网

https://www.arangodb.com/community-server/sql-aql-comparison/

arangoDB之AQL语句常用操作

 

基础知识

  • 单行注释:双斜杠开头
  • 多行注释:以正斜杠和星号开头,以星号和后面的正斜杠结尾

 arangoDB之AQL语句常用操作

  • AQL只允许一个单一查询字符串查询; 因此,不允许使用分号来表示一个查询的结束和分隔多个查询
  • 关键字不区分大小写,如果名称使用了关键字的名称,则名称必须包含在反引号或正引号中
  • 集合不能用"" ''包裹
  • 可以通过点或者[]获取对象的属性,但是方括号内可以嵌套表达式
  • 使用 AQL 从数据库中检索数据始终包括RETURN 操作

增删改查

 

插入新的文档(即单行)

insert {name: “andy”, dender: “m”,} into users

插入查询的文档(在users这个集合中查找到active==1的user,并插入到backup这个集合中)

for  user in  users

filter user.active ==1

insert user into backup

插入多行

FOR user IN [

  { name: "John Doe", gender: "m" },   { name: "Jane Smith", gender: "f" } ]   INSERT user INTO users

 

生成测试文档(即多行)

for I in 1..1000

 insert{

name:concat(“test”, i),

gender:( i%2==0 ? “f”: “m”)

}

Into users

 

REMOVE { _key: '00000000092a06ca' } IN ci

 

更新部分属性使用update:

当key=1时,更新name为andy

update {_key:’1’}

with {name : ‘andy’}

in users

 

如果要批量更新符合条件的数据数据时,可以用for遍历所有的文档,并且用filter 关键字过滤出要更新的文档

for i in ci

filter i.typeCode=='ruijieFan'

update i with {manageStatus : 2} in ci

return NEW

全部替换某个文档 replace

 

FOR i IN 1..1000
  REPLACE CONCAT('test', i) WITH { foobar: true } IN users
 
FOR u IN users
  FILTER u.active == false
  REPLACE u WITH { status: 'inactive', name: u.name } IN backup

 

 

使用查询方法时,必须要使用return返回数据

 

for i in ci

filter i.typeCode=='ruijieFan'

return i

 

遍历ci集合中的所有文档,返回文档属性typecode=='ruijieFan'的文档

 

关键字

https://www.arangodb.com/docs/stable/aql/operations.html

NEW,OLD

NEW指插入或修改的文档修订,OLD指更新或删除前的文档修订。INSERT语句只能引用NEW伪值,REMOVE操作只能引用OLD。 UPDATEREPLACE并且UPSERT可以指。

通常跟在retrun后面。 比如我们更新了某些文档,那么可以使用return NEW查看有更新的文档,并显示文档的全部内容

如果没有return 等参数的话,update等关键字是没有返回具体值的.在同一个查询语句中,可以同时返回NEW 和OLD;也可以只返回NEW或OLD的某个属性。Eg: NEW. TypeCode

 arangoDB之AQL语句常用操作

 

 

 

Filter

过滤数据

如果使用多个FILTER语句,它们的结果将与逻辑 AND 组合,这意味着所有过滤条件必须为真才能包含一个元素。

 arangoDB之AQL语句常用操作

 

 

Limit

限制返回的条数,可选地跳过元素(分页)

arangoDB之AQL语句常用操作

 

 

如果limit后面是两个参数,那么第一个个参数表示从第几条开始,第二个参数表示取几条,类似分页的效果

 

arangoDB之AQL语句常用操作

 

 

 

LET

LET 关键字是为变量分配任意值,变量名在同一查询应该保持唯一。

主要用于声明复杂的计算并避免在查询的多个部分重复计算相同的值。

变量名称中允许的字符是字母ato z(小写和大写)、数字0to 9、下划线 ( _) 符号和美元 ( $) 符号。变量名不能以数字或下划线开头。美元符号只能用作变量名的第一个字符,并且后面必须跟一个字母。

 arangoDB之AQL语句常用操作

 

 

 

Sort

排序,默认升序排序,可根据关键字asc,desc自定义排序规则,也可以使用一个或多个属性,升序或降序

 arangoDB之AQL语句常用操作

 

 

按 lastName(升序)、firstName(升序)和 id(降序)排序的示例查询:

FOR u IN users
  SORT u.lastName, u.firstName, u.id DESC
  RETURN u

 

 

 

FOR:遍历集合或视图、数组的所有元素或遍历图形

 

RETURN:产生查询的结果。

RETURN语句的结果始终是一个数组

Return后面还可以接着一个DISTINCT关键字,确保返回值的唯一性。Distinct语句仅对挨着的return语句生效

 arangoDB之AQL语句常用操作    arangoDB之AQL语句常用操作        

 

 

 

SEARCH:查询 ArangoSearch 视图的(全文)索引

 

 

COLLECT:按一个或多个组标准对数组进行分组。也可以计数和聚合。

REMOVE:从集合中删除文档。

 arangoDB之AQL语句常用操作

REMOVE { _key: '00000000092a06ca' } IN ci

UPDATE:部分更新集合中的文档。

UPDATE document IN collection options
UPDATE keyExpression WITH document IN collection options

 

使用第一种语法时。Document里必须包含_key属性,否则不知道更新的是哪个文档

 

REPLACE:完全替换集合中的文档。

 

REPLACE document IN collection options
REPLACE keyExpression WITH document IN collection options

 

INSERT:将新文档插入到集合中。

UPSERT:更新/替换现有文档,或者在它不存在的情况下创建它。

WITH:指定查询中使用的集合(仅在查询开始时)

 

 

 

运算符

https://www.arangodb.com/docs/stable/aql/operators.html

arangoDB之AQL语句常用操作

 

 arangoDB之AQL语句常用操作

 

 

FOR doc IN viewName

  SEARCH ANALYZER(doc.text == "quick" OR doc.text == "brown", "text_en")

  // -- or --

  SEARCH ANALYZER(doc.text IN ["quick", "brown"], "text_en")

  RETURN doc

 arangoDB之AQL语句常用操作

 

 

?代表否则。

 arangoDB之AQL语句常用操作

 

 

 

 

 

上一篇:JAVA 上传文件到另一台远程服务器(包含搭建文件服务器 基于Linux)


下一篇:MySQL中使用IN查询到底走不走索引