在ArangoDB中,AQL(ArangoDB Query Language)提供了强大的查询功能,包括排序和分组。
排序:
在AQL中,你可以使用ORDER BY
子句对查询结果进行排序。语法如下:
FOR doc IN collection SORT doc.property [ASC|DESC] RETURN doc
其中,doc
是当前遍历到的文档,collection
是你要查询的集合,doc.property
是你想要根据哪个属性进行排序的字段名,ASC
表示升序(默认),DESC
表示降序。
例如,如果你有一个名为users
的集合,其中包含name
和age
两个字段,你可以这样查询并按照年龄升序排列:
FOR user IN users SORT user.age ASC RETURN user
分组:
在AQL中,你可以使用GROUP BY
子句对查询结果进行分组。语法如下:
FOR doc IN collection GROUP doc.property INTO group_name RETURN { group_name: group_name, docs: [group_docs] }
其中,doc
是当前遍历到的文档,collection
是你要查询的集合,doc.property
是你想要根据哪个属性进行分组的字段名,group_name
是分组后的名称,group_docs
是分组后的文档数组。
例如,如果你有一个名为orders
的集合,其中包含customerId
和amount
两个字段,你可以这样查询并按照客户ID分组并计算每组的总金额:
FOR order IN orders GROUP order.customerId INTO customer_groups RETURN { customer_id: customer_groups[0].customerId, total_amount: SUM(order.amount) }
注意:以上示例中的SUM(order.amount)
是一个聚合函数,用于计算每组的总金额。AQL还提供了其他聚合函数,如MIN()
、MAX()
、COUNT()
等,可以根据需要进行组合使用。