ArangoDB——AQL操作

  • 插入文档
    • 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
  • 检索文档
    • 左侧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
    • 使用 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 连接
    • 可以使用查询编辑器右下角的执行按钮。查询结果将显示在“执行”按钮下方。结果下载为 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

  • 限制结果计数
    • LIMIT 关键字,后面跟着一个数字
      • FOR u IN users LIMIT 5 RETURN u.name
      • FOR u IN users LIMIT 2,5 RETURN u.name
        • 从第二个开始的后面五个名字
  • 排序操作
    • 返回文档的顺序不一定与插入时的顺序相同,使用 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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值