ArangoDB是一个多模型数据库管理系统,它支持文档、图形和键值对数据模型。AQL(ArangoDB查询语言)是用于在ArangoDB中执行查询和操作数据的官方查询语言。以下是AQL可以执行的一些常见查询操作:
-
文档查询:
FOR doc IN collection_name FILTER condition RETURN doc
:用于从集合中检索满足特定条件的文档。FOR doc IN collection_name RETURN doc._key, doc.property1, doc.property2
:返回文档的特定属性。FOR doc IN collection_name UPDATE doc WITH {property1: new_value} IN collection_name
:更新集合中的文档。
-
图形查询:
FOR v, e, p IN 1..
:执行广度优先搜索(BFS)。OPTIONS {bfs: true, uniqueVertices: 'global', vertexIds: ['startVertexId']} RETURN v, e, p FOR v, e, p IN graph_name OPTIONS {aql: 'shortestPath', weightAttribute: 'weight'} RETURN v, e, p
:查找图中的最短路径。
-
键值对查询:
FOR key, value IN collection_name FILTER condition RETURN key, value
:从键值对集合中检索满足特定条件的键值对。
-
聚合查询:
FOR item IN collection_name COLLECT aggregate_function(item) INTO grouped_items RETURN grouped_items
:对集合中的文档进行分组和聚合操作。
-
事务查询:
FOR doc IN collection_name UPDATE doc WITH {property1: new_value} IN collection_name OPTIONS {write: 'transaction'}
:在事务中更新文档。
-
索引查询:
FOR doc IN collection_name FILTER doc.property == value USE index_name RETURN doc
:使用索引加速查询。
-
地理空间查询:
FOR point IN collection_name FILTER geo.distance(point, {latitude: 40, longitude: 110}) <= 10 RETURN point
:执行地理空间距离查询。
这些只是AQL功能的一部分,AQL还支持更复杂的查询操作,如子查询、正则表达式匹配、数组操作等。此外,ArangoDB还提供了丰富的图形查询功能,包括遍历、连接、分组、排序等。