ArangoDB高级查询(三)

linux导入导出数据(不需要登录arango 直接运行以下命令即可):

导入数据

arangorestore --input-directory ./collectObj --server.database database1 --server.username username1 --server.password password1

导出数据

arangodump --collection collectObj --output-directory ./collectObj/ --server.database database1 --server.username root --server.password password1

说明:

collectObj 为collection名称

./collectObj/ 为导出文件路径

database1为collection所在的数据库

windows下导入导出数据(进入bin目录):

导入数据:

.\arangorestore.exe --input-directory G:/ --server.database arangodb --server.username arangodb

--server.password arangodb

导出数据:

.\arangodump.exe --collection court --output-directory G:/ --server.database arangodb

--server.username arangodb --server.password arangodb

查询两个顶点间最短路径

AQL语句:

FOR v,e IN any SHORTEST_PATH

"account/6217003810017623623" TO

"account/6217003810017623629"

GRAPH 'accountGraph'

return {vertexLst:v,edgeLst:e}

语句解读:

v vertex 顶点

e edge 边

any 不区分方向

account/6217003810017623623 起始顶点

account/6217003810017623629目标定点

'accountGraph'图名称

vertexLst 返回顶点的集合

edgeLst 返回边的集合

图遍历

实例一:

AQL语句:

FOR startvertice IN ["account/6217003876521623568",

"device/223DAF21-2C1B-3216-C6CA-0A1B131CF03C"]

FOR v, e, p IN 1..2

ANY startvertice

GRAPH "graphName"

filter p.vertices[* return PARSE_IDENTIFIER(CURRENT).collection] ALL in

["account", "device"]

return p

语句解读:

外层For为起始顶点,此处指定两个起始顶点

内层for拿到一个起始顶点,以起始顶点开始查询关联顶点

In 1..2 表示最少一层最多两层 如:A——>B——>C 即为两层

graphName为graph名称

v为顶点,e为边,p为路径

p.vertices[* return PARSE_IDENTIFIER(CURRENT).collection] 返回顶点所在的collection

return p 返回整个路径

整句解读:

分别以两个顶点开始,不区分方向查询各自最深为2层的节点,且节点必须是account和device这两个维度。

实例二:

AQL语句:

FOR v, e IN 1..1ANY "company/310381000032632"

GRAPH "graphName"

let me = DOCUMENT("company/310381000032632")

return {vertex:v,edges:e,me:me}

语句解读:

in 1..1 只查询与顶点相关的第一层级的顶点

graphName graph名称

let me 其中me为一个临时变量,用于接收节点自身

return {vertex:v,edges:e,me:me} 此处指定返回结果集,特意返回me 因为查询结果中的顶点默认是没有返回顶点自身的,这样前端构建graph的时候无法创建关联关系,都是散乱的顶点。

你可能感兴趣的:(database)