ArangoDB 学习手记

最近做项目要用到ArangoDB,语法和之前PLSQL区别很大,极其不顺手,现在记录下代码片段,以备学习使用

统计记录总数

// AQL 语法
FOR t IN words 
	FILTER t.type == "01" AND t.isDelete == "0" 
	COLLECT WITH count INTO length 
	RETURN length

// SQL语法
SELECT COUNT(1) length 
	FROM words t
	WHERE t.type = '01' AND t.isDelete = '0'  

Group by 统计

// AQL
FOR t IN words 
	FILTER t.type == "01" AND t.isDelete == "0" 
	COLLECT dataState = t.dataState WITH COUNT INTO len 
	RETURN {'dataState': dataState, 'num': len}

//SQL
SELECT t.dataState, COUNT(1) 
	FROM words t 
	WHERE t.type = '01' AND t.isDelete = '0' 
	GROUP BY  t.dataState

查询区间记录(分页)

// AQL 语法
FOR t IN words FILTER t.type == "01" AND t.isDelete == "0" SORT t._id DESC LIMIT 0,10 RETURN t

// SQL语法
SELECT * FROM words t WHERE t.type = '01' AND t.isDelete = '0' ORDER BY t.id DESC LIMIT 0,10  

Distinct 关键字的用法

// AQL 语法
FOR t IN words 
	FILTER t.type == "01" AND t.isDelete == "0" 
	RETURN DISTINCT { name: t.name }

// SQL语法
SELECT DISTINCT t.name 
	FROM words t
	WHERE t.type = '01' AND t.isDelete = '0'  

更新数据

// AQL
FOR t IN words FILTER t._id IN ["10001","100002"] UPDATE t WITH {isDelete: "1"} IN words

// SQL
UPDATE words SET isDelete=1 WHERE id in ('10001','100002')

删除数据

// AQL
FOR t IN words FILTER t._id IN ["10001","100002"] REMOVE t IN words

// SQL
DELETE FROM words WHERE id in ('10001','100002')

关联查询后更新数据

// AQL
FOR r in (
	FOR v, e, p IN 1..1 OUTBOUND 'words/10001' relation
		FILTER e.type IN ['1','2']
		COLLECT id  = e._key WITH count INTO count
	RETURN { "id": id, "count": count }
)
FOR t IN words FILTER t._id == r.id UPDATE t WITH { "leaf": r.count == 0 } IN words

// SQL
UPDATE relation t INNER JOIN (
	SELECT ID, COUNT(1) FROM TABLE1 a
		LEFT JOIN TABLE2 b ON a.type = b.type
	WHERE a.type IN ('1','2') AND a._key = 'words/10001'
)  r
ON t._id = t.id 
SET t.heaf = t.count = 0

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值