ArangoDB(二)AQL

ArangoDB AQL
  • 插入单条
INSERT {
    "name": "Ned",
    "surname": "Stark",
    "alive": true,
    "age": 41,
    "traits": ["A","H","C","N","P"]
} INTO Characters
  • 插入多条
for d in [
{ "name": "Jaqen", "surname": "H'ghar", "alive": true, "traits": ["H","F","K"] },
{ "name": "Roose", "surname": "Bolton", "alive": true, "traits": ["H","E","F","A"] }]
	insert d into Characters
  • 根据id查询
RETURN DOCUMENT("Characters/1221")
  • 遍历查询+filter+limit+sort
for i in Characters
	filter i.name="jone"
	sort i.name desc
	limit 10,2
	return i
  • 更新单个属性
UPDATE "2861650" WITH { alive: false } IN Characters
  • 替换文档
REPLACE "2861650" WITH {
    name: "Ned",
    surname: "Stark",
    alive: false,
    age: 41,
    traits: ["A","H","C","N","P"]
} IN Characters
  • 删除
REMOVE "1221" in Characters
  • Count
for i in airports
Collect 
WITH COUNT into number
return {"number":number}
  • Collect(group by)
for i in airports
Collect id=i._id
WITH COUNT into number
return {"id":id,number":number}
  • Join
For user in Users
	for friend in friends
		Filter user._key==friend.user
		return user
  • 图遍历
FOR c IN Characters
    FILTER c.name == "Bran"
    FOR v IN 1..1 OUTBOUND c ChildOf
        RETURN v.name
  • 模式匹配
for val,edge,path in 1..1 inbound "Character/1221" ChildOf
	Return val
  • 最短路径:
For v in outbound shortest_path startVertex to targetVertex Graph graphname [options ...]

For v in outbound shortest_path startVertex to targetVertex edges1,edges2... [options ...]
  • CONCAT
for i in airports 
    return concat(i._key,"->",i._id)
  • DISTINCT 返回唯一值
  • CONCAT_SEPARATOR
FOR v,e,p in 1..6 OUTBOUND id edges Options {uniqueVertices:'path',uniqueEdges:'none'} Filter v.name="111" return CONCAT_SEPARATOR('->',p.vertices[*].name)
图遍历解释
FOR v IN 1..1 OUTBOUND "Characters/1741" ChildOf
	OPTIONS {
		uniqueVertices:"path",
		uniqueEdges:"none"
	}
    RETURN v.name

以Characters/1741为起点,查询它的outbound方向(child->parent),查找一个深度的距离。

1…1表示是第一层到第一层,表示查找parents

1…2表示第一层到第二层,表示查找parents和groundparents

以此类推;

对于inbound,可以理解为对起点来说是in,也就是指向起点,也就是起点的上游

对于outbound,同样理解为对起点来说out,也就是起点指向的节点,也就是起点的下游。

Options :
  • bfs:宽度优先 {true,false}

  • dfs:深度优先(默认true)

  • uniqueVertices:{none,path,global},顶点唯一性,path:同一条路径上端点不重复;global:所有路径上端点不重复;none:允许端点重复,默认none

  • uniqueEdges:边唯一性,同上,默认path

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值