如何在 ArangoDB 中将两个返回变量的输出合并为一个?

问题描述

这里是 arangoDB 的初学者:

我有两个输出存储在两个变量中,例如:ab
变量 ab 中项目的结构完全相同,但数据不同。示例如下:

a = {
    "user": "Thor Odinson","city": "New York","action": "Lives"
}

b = {
    "user": "Thor Odinson","action": "Childhood"
}

如何将两个变量的输出合二为一,如下所示?

{
    "user": "Thor Odinson","action": ["Lives","Childhood"]
}

理想情况下,将两个文档以user和city为公分母,action合并成一个数组?不确定 arango 本身是否具有这样的功能,但任何朝着正确方向发展的帮助也会有很大帮助!
我愿意在我的代码中编写逻辑,但我想尽可能避免这种情况。

我一直在玩 COLLECTUNIONMERGE,但没有成功。

解决方法

data 定义为

LET a = {
    "user": "Thor Odinson","city": "New York","action": "Lives"
}

LET b = {
    "user": "Thor Odinson","action": "Childhood"
}

LET data = [a,b]

要获得 data 所需的结果,您应该开始:

FOR i IN data
    COLLECT user = i.user,city = i.city INTO groups = i.action 
    RETURN {"user": user,"city": city,"action": groups}

这给出了想要的结果:

[
  {
    "user": "Thor Odinson","action": [
      "Lives","Childhood"
    ]
  }
]

如果您需要对返回的变量进行更多控制,请使用 KEEP

FOR i IN data
    LET action = i.action
    COLLECT user = i.user,city = i.city INTO groups KEEP action
    RETURN {"user": user,"action": groups[*].action}