Skip to main content

ArangoDB

  • arangodb/arangodb
    • Apache-2.0, C++, JS
    • Graph+Document
  • AQL vs SQL
  • Shell cheatsheet
  • Admin
    • arangoimp
      • 数据导入
      • 支持: JSON, CSV, TSV
      • 导入 CSV 或 TSV 时如果有头,使用 --skip-lines=1 跳过
    • arangodump
      • 数据转储
    • arangorestore
      • 恢复转储的数据
  • Configuration
  • 默认端口 8529, 支持 HTTP 和 TCP 协议
  • 默认账号为 root, 无密码
  • Key 规范

docker run -d --restart always -v /etc/localtime:/etc/localtime:ro \  -e ARANGO_RANDOM_ROOT_PASSWORD=1 \  -v $PWD/arangodb/data:/var/lib/arangodb3 -v $PWD/arangodb/apps:/var/lib/arangodb3-apps \  -p 8529:8529 \  --name arangodb arangodb --tcp.reuse-address=true --http.hide-product-header=true --query.cache-mode=on
# 远程连接# 如果是 https 则用 ssl://mydomain.comarangosh --server.endpoint http+tcp://192.168.1.1:8529 \  --server.username $USERNAME --server.password $PASSWORD  --server.database Nodes
// https://docs.arangodb.com/3.1/Manual/Administration/ManagingUsers.html// 用户管理var users = require('@arangodb/users');// users.save(user, passwd, active, extra)users.save('[email protected]', 'mypassword');users.grantDatabase('[email protected]', 'testdb');
// 导出查询结果require('fs').write('/var/lib/arangodb3/export.json', JSON.stringify(aql`FOR n IN Nodes return n`));// 导出拼接后的数据require('fs').write(  '/var/lib/arangodb3/export.txt',  db    ._query(`return CONCAT_SEPARATOR("\n",FOR n IN Nodes FILTER n.name != null COLLECT col = n.name return col)`)    .toArray()[0],);
// 将边的数量更新到节点上FOR doc IN documents  LET inEdgesCount = LENGTH(FOR v IN 1..1 INBOUND doc GRAPH 'edgeGraph' RETURN 1)  LET outEdgesCount = LENGTH(FOR v IN 1..1 OUTBOUND doc GRAPH 'edgeGraph' RETURN 1)  UPDATE doc WITH     {inEdgesCount: inEdgesCount, outEdgesCount: outEdgesCount} In Documents

AQL#

https://www.arangodb.com/why-arangodb/sql-aql-comparison/

ChangeLog#

3.2#

  • arangoimp
    • 支持 key 转换
    • 支持 jsonl 格式
    • 可指定类型 auto 通过文件扩展名检测类型