问题描述
这里是 arangoDB 的初学者:
我有两个输出存储在两个变量中,例如:a
和 b
。
变量 a
和 b
中项目的结构完全相同,但数据不同。示例如下:
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 本身是否具有这样的功能,但任何朝着正确方向发展的帮助也会有很大帮助!
我愿意在我的代码中编写逻辑,但我想尽可能避免这种情况。
我一直在玩 COLLECT
、UNION
和 MERGE
,但没有成功。
解决方法
将 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}