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
- _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
- 检索集合所有文档
- 限制结果计数
- LIMIT 关键字,后面跟着一个数字
- FOR u IN users LIMIT 5 RETURN u.name
- FOR u IN users LIMIT 2,5 RETURN u.name
- 从第二个开始的后面五个名字
- LIMIT 关键字,后面跟着一个数字
- 排序操作
- 返回文档的顺序不一定与插入时的顺序相同,使用 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操作相关推荐
- ArangoDB AQL中的图形绘制遍历
原文:Graphs in AQL AQL中的图形 在ArangoDB中可以使用多种方式处理图形,以及使用AQL查询图形的不同方法. 管理图形的两个选项是使用 ArangoDB管理一个图形中涉及的集合的 ...
- ArangoDB——AQL编辑器
AQL 编辑器 ArangoDB 的查询语言称为 AQL.AQL与关系数据库管理系统 (RDBMS)区别在于其更像一种编程语言,更自然地适合无模式模型,并使查询语言非常强大,同时保持易于读写. 数据建 ...
- ArangoDB(二)AQL
ArangoDB AQL 插入单条 INSERT {"name": "Ned","surname": "Stark",& ...
- ArangoDB 系列(1) —— 初识 ArnagoDB
初识 ArangoDB 文章目录 初识 ArangoDB 前置知识 ArangoDB 的特性 ArangoDB 的安装与连接 ArangoDB 的操作 ArangoDB 的管理操作命令 数据库管理命令 ...
- ArangoDB高级教程——ArangoDB3.3.19整合Springboot2.1.0
ArangoDB安装见 https://blog.csdn.net/w690333243/article/details/83626273 Springboot使用2.1.0 moven项目中 pom ...
- CentOS7安装配置ArangoDB3.4.1图形数据库、NOSQL资料
https://www.arangodb.com/tutorials/cn-tutorial-sync-java-driver/ https://www.arangodb.com/why-arango ...
- 关于大型网站技术演进的思考
关于大型网站技术演进的思考(一)--存储的瓶颈(1) 前不久公司请来了位互联网界的技术大牛跟我们做了一次大型网站架构的培训,两天12个小时信息量非常大,知识的广度和难度也非常大,培训完后我很难完整理出 ...
- ArangoDB的ASL的常用操作
arangodb 的 AQL的简单 CURD 操作 https://www.arangodb.org/3.3/AQL/ 阅读笔记 1.插入数据 单条插入 INSERT {"name" ...
- ArangoDB 学习笔记(二)AQL Java API | AQL语法 | 使用Java连接ArangoDB
文章目录 参考资料 一.ArangoDB Java Driver 支持的不同类型 1.1 BaseDocument 1.2 XML 1.3 Graph 二.AQL 2.1 AQL 语法 2.1.1 查 ...
最新文章
- GAN(Generative Adversarial Network,GAN)模型之:EBGAN、PGGAN、CGAN、ACGAN模型
- 071_html语言代码
- 《JAVA程序设计》_第四周学习总结
- 大工18秋计算机应用在线作业,大工18秋《计算机组网技术》在线测试1【标准答案】...
- gRPC-rs:从 C 到 Rust 1
- python爬虫进程和线程_python爬虫番外篇(一)进程,线程的初步了解-阿里云开发者社区...
- Django--模板语言
- matlab如何使音频文件声音变大_如何用录音软件AU2020给音频消除噪音?只需简单几步你也可以办到...
- vue中$nextTick()作用
- oracle的一些学习
- Template-Based 3D Model Fitting Using Dual-Domain Relaxation
- 锐捷认证客户端常见问题解决及简介
- 10 使用ViewPager实现导航
- 第五节、矩阵分解之LU分解
- android屏幕同步到macbook,Mirror for Android TV for Mac(屏幕和声音镜像到Android TV的工具)...
- 通过python让打印出来的字体看起来像手写
- 用php做动态时钟,vue实现动态时钟以及日期
- App预览制作,看我就够了
- 硬件测试工程师的待遇和前景
- X79 – E5 1620 1620v2 黑苹果10.15