gpt4 book ai didi

timestamp - ArangoDB如何申请 'Group by'(收集或...?)

转载 作者:行者123 更新时间:2023-12-02 22:29:01 25 4
gpt4 key购买 nike

如何使用 AQL 对 ArangoDB 中的数据进行分组?比如我的结构是:

[
{name: "karl", id: "1", timestamp: "11112"},
{name: "migele", id": "2", timestamp: "11114"},
{name: "martina", id": "2", timestamp: "11116"},
{name: "olivia", id": "3", timestamp: "11118"},
{name: "sasha", id": "4", timestamp: "111120"},
]

我想接收具有唯一 ID 和实际时间戳的数据:

{
karl,
martina (because martina timestamp > migele timestamp and his ids is equals),
olivia,
sasha
}

最佳答案

要分组,您可以使用COLLECT:

FOR doc IN collection
COLLECT id = doc.id INTO g
RETURN { id: id, docs: LENGTH(g) }

这将提供一个包含唯一 ID 的列表,对于每个唯一 ID,您将收到具有该 ID 的文档数量。

现在要获取每个组中 时间戳 中具有最高值的文档,您首先需要按时间戳对每个组进行排序:

FOR doc IN collection
COLLECT id = doc.id INTO g
LET names = (FOR value IN g[*].doc SORT value.timestamp DESC RETURN value.name)
RETURN names

最后,要仅接收具有最高时间戳值的成员,请使用 names[0] (您也可以在之前应用 LIMIT,因为您只会对第一项感兴趣):

FOR doc IN collection
COLLECT id = doc.id INTO g
LET names = (FOR value IN g[*].doc SORT value.timestamp LIMIT 1 DESC RETURN value.name)
RETURN names[0]

关于timestamp - ArangoDB如何申请 'Group by'(收集或...?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26633228/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com