在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()
等,可以根據需要進行組合使用。