- 插入文档
- INSERT 关键字想要插入一些属性,花括号 { } 表示文档或对象。INTO 是每个操作的必需 INSERT 的部分 ,后面是我们要在其中存储文档的集合名称。RETURN NEW 返回新创建的文档.
- INSERT document INTO collectionName
- 属性值的类型
- null
- boolean ( true , false) :布尔值
- number (integer and floating point) :数值(整数和浮点数)
- string :字符串
- array :数组
- object :整个文档属于对象
- INSERT { _key: "值", 属性键1: "值1", 属性键2: “值2” } INTO 集合名
- INSERT { _key: "6698", name: "Jole", age: 27 } INTO users
- INSERT { _key: "6700", name: "Huy", age: 69 } INTO users RETURN NEW
- 批量插入
- LET date = [ { _key: "6698", name: "Jole", age: 27 } , { _key: "6700", name: "Huy", age: 69 } ] FOR d in date INSERT d INTO users
- 关键字 LET 定义了一个对象数组变量,指定的变量名
- LET variableName = valueExpression FOR n in variableName insert n into collectionName
- valueExpression = [ {...}, {...}, ... ]
- 注:AQL 不允许 INSERT 在单个查询中针对同一集合的多个操作。但可使用 FOR 循环插入文档。
- 批量导入 JSON 文档
- 数据库系统自动添加三个属性。
- _key
- 每个文档唯一值,用于在集合中标识
- 自行定义也行
- _id
- 集合名称、正斜杠 和文档键的串联,标识对象中唯一的文档
- _rev
- 系统管理的修订 ID
- _key
- 数据库系统自动添加三个属性。
- 检索文档
- 左侧QUERIES菜单,单击此按钮将打开查询编辑器。
- 使用 DOCUMENT 关键字检索特定文档
- RETURN DOCUMENT("_id")
- RETURN DOCUMENT("users/6699")
- RETURN DOCUMENT("collectionName", "_key")
- RETURN DOCUMENT("users","6699")
- RETURN DOCUMENT("users", [ "6699","6698" ] )
- 注:作用数组形式可以代替 FOR FILTER 循环
- FOR u IN users FILTER u._key IN [ "6699","6698" ] RETURN u
- RETURN DOCUMENT("_id")
- 使用 FOR 关键字返回对象所有文档
- FOR variableName IN collectionName
- FOR d IN collectionname RETURN d
- 注:文档 _key 值会有所不同,因为它们是自动生成的。
- 注:返回特定属性需要用大括号
- for u in users return {name:u.name,age:u.age,sex:u.sex}
- 条件过虑检索,使用 FILTER 关键字
- FOR user IN users FILTER user.age == 30 RETURN user
- FILTER 属性 表示属性值不为空
- 平等条件
- 等于 ==
- 不等于 !=
- 范围条件
- 大于 >
- 小于 <
- 大于等于 >=
- 小于等于 <=
- 多个条件
- 添加多个 FELTER
- 用 AND 或 OR 连接
- FOR variableName IN collectionName
- 可以使用查询编辑器右下角的执行按钮。查询结果将显示在“执行”按钮下方。结果下载为 JSON 文件或 CSV 文件,或将查询复制回编辑器。
- 更新文档
- 使用 UPDATE 或 REPLACE 关键字,要更新的属性写为 WITH 关键字后的对象。 IN 表示在哪个集合中执行此操作,就像 INTO (这两个关键字在这里实际上可以互换)。区别: REPLACE 更新会删除所有属性(除 _key 和 _id 保持不变),只添加指定属性。UPDATE 只替换指定属性值其他保持不变。
- UPDATE documentKey WITH object IN collectionName
- UPDATE "6699" WITH { age: 40 } IN users RETURN NEW
- REPLACE “6699” WITH { age:100 } IN/INTO users RETURN NEW
- 注:可添加属性
- UPDATE users { sex : '男' } IN users
- 使用 FOR 循环更新
- FOR u IN users UPDATE u WITH { sex : '女' } IN user
- 问题
- 数据库不能用 . 带用对象属性
- FOR 已循环使用参数 u , 但 WITH 后的属性不能用 u. 定义
- 如果用 REPLACE 循环更新,要附文档的原值需要怎么写?
- IN 后的 collectionName 必须要原名,不能用 u 代替
- 删除文档
- REMOVE 关键字
- REMOVE _key 或 _id IN collectionName
- REMOVE "6699" IN users
- 循环删除文档(同样适用于 INSERT, UPDATE 和 REPLACE)
- FOR user IN users FILTER user.age >= 30 REMOVE user IN users
- 遍历文档
- 检索集合所有文档
- FOR user IN users return user
- FOR user IN users return user
- 检索集合所有文档
- 限制结果计数
- 排序操作
- 返回文档的顺序不一定与插入时的顺序相同,使用 SORT 关键字进行排序。DESC 降序, ASC 可以用于升序。 ASC 虽然是默认值,但可以省略。
- FOR u IN users SORT u.age DESC return u
- FOR u IN users SORT u.name,u.age return u
- 如果排序有空值,要添加条件排除空值
- 组合新值
- CONCAT() 是一个可以将元素连接成字符串的函数。
- FOR user IN users RETURN CONCAT(user.name, "'s age is ", user.age)
- 多文件的AQL
- 创建两个文件 Characters 和 Traits
- FOR c IN Characters RETURN c.traits
- FOR c IN Characters FOR key IN c.traits FOR t IN Traits FILTER t._key == key RETURN t //返回 c 文件出现 t._key 关联的文档
- 合并字符 MERGE()
- FOR c IN Characters RETURN MERGE(c, {traits: ( FOR key in c.traits FOR t in Traits FILTER key == t._key RETURN t.en)})
- Characters.json
- Traits.json
- 创建两个文件 Characters 和 Traits
ArangoDB——AQL操作
于 2023-03-11 21:40:31 首次发布