ArangoDB查询语言(AQL) 基本语法&用法

本文详细介绍了ArangoDB的查询语言AQL的基础知识,包括CRUD操作、匹配文件、排序限制、图操作和地理空间查询。AQL与SQL有相似之处,但也存在差异,如AQL不支持数据定义操作,而是通过FOR循环进行批量插入。此外,文章还展示了如何使用AQL进行地理位置查询和图数据的遍历。
摘要由CSDN通过智能技术生成

原文链接

个人博客-欢迎访问

ArangoDB查询语言(AQL)类似于结构化查询语言(SQL) 在它的目的。两者都支持读取和修改集合数据,但AQL不支持数据定义操作,例如创建和删除数据库,集合和索引。

虽然有些关键字重叠,但AQL语法与SQL不同。例如,SQL WHERE和AQL FILTER子句是等效的,因为它们都定义了返回结果的条件。但是,SQL使用预定义的序列来确定WHERE语句必须在哪里出现。在AQL中,子句从左到右执行,因此FILTER查询中子句的位置决定了它的优先级。

尽管有这些差异,任何具有SQL背景的人都应该没有学习AQL的困难。

一、数据预览

本次使用的数据共有43条,每条数据包含姓氏、年龄、活动状态和特征等六个字段

其中每个特征都有一个随机字母作为文档密钥。特质标签有英文和德文。

地点由地名和经纬度组成:

二、基本的CRUD

创建集合:

在创建文档之前,需要创造一个放置它的集合,集合可以通过Web界面,arangosh或驱动程序来创建。AQL无法创建集合。

单击Web界面中的COLLECTIONS,然后单击Add Collection并键入 Charactersname。使用保存确认。新集合就出现在了列表中。

插入单个对象:

使用AQL插入文档

INSERT {
    "name": "Ned",
    "surname": "Stark",
    "alive": true,
    "age": 41,
    "traits": ["A","H","C","N","P"]
} INTO Characters

复制代码

语法:

INSERT document INTO collectionName

该文档是一个对象,由属性键和值对组成。属性键的引号在AQL中是可选的。键总是字符串,而属性值可以有不同的类型:

  • null
  • boolean (true, false)
  • number (integer and floating point)
  • string
  • array
  • object

批量插入对象:

AQL不允许INSERT在单个查询中针对同一集合的多个操作。但是可以使用FOR循环体,插入多个文档。

LET data = [
    { "name": "Robert", "surname": "Baratheon", "alive": false, "traits": ["A","H","C"] },
    { "name": "Jaime", "surname": "Lannister", "alive": true, "age": 36, "traits": ["A","F","B"] },
    { "name": "Catelyn", "surname": "Stark", "alive": false, "age": 40, "traits": ["D","H","C"] },
    { "name": "Cersei", "surname": "Lannister", "alive": true, "age": 36, "traits": ["H","E","F"] },
    { "name": "Daenerys", "surname": "Targaryen", "alive": true, "age": 16, "traits": ["D","H","C"] },
    { "name": "Jorah", "surname": "Mormont", "alive": false, "traits": ["A","B","C","F"] },
    { "name": "Petyr", "surname": "Baelish", "alive": false, "traits": ["E","G","F"] },
    { "name": "Viserys", "surname": "Targaryen", "alive": false, "traits": ["O","L","N"] },
    { "name": "Jon", "surname": "Snow", "alive": true, "age": 16, "traits": ["A","B","C","F"] },
    { "name": "Sansa", "surname": "Stark", "alive": true, "age": 13, "traits": ["D","I","J"] },
    { "name": "Arya", "surname": "Stark", "alive": true, "age": 11, "traits": ["C","K","L"] },
    { "name": "Robb", "surname": "Stark", "alive": false, "traits": ["A","B","C","K"] },
    { "name": "Theon", "surname": "Greyjoy", "alive": true, "age": 16, "traits": ["E","R","K"] },
    { "name": "Bran", "surname": "Stark", "alive": true, "age": 10, "traits": ["L","J"] },
    { "name": "Joffrey", "surname": "Baratheon", "alive"</
  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值