在 AQL 中返回带有动态键的对象

spe*_*men 2 arangodb

我可以返回类似以下内容吗?

{
"c/12313" = 1,
"c/24223" = 2,
"c/43423" = 3,
...
}
Run Code Online (Sandbox Code Playgroud)

来自 AQL 查询?这个想法是这样的(这个非工作代码):

for c in my_collection
return { c._id : c.sortOrder }
Run Code Online (Sandbox Code Playgroud)

sortOrder我的文件中的一些财产在哪里?

CoD*_*anX 7

是的,可以有动态属性名称

LET key = "foo"
LET value = "bar"
RETURN { [ key ]: value } // { "foo": "bar" }
Run Code Online (Sandbox Code Playgroud)

计算属性键的表达式必须用[方括号括起来],就像在 JavaScript 中一样。

然而,这并没有返回完全期望的结果:

FOR c IN my_collection
  RETURN { [ c._id ]: c.sortOrder }

[
  { "c/12313": 1 },
  { "c/24223": 2 },
  { "c/43423": 3 },
  ...
]
Run Code Online (Sandbox Code Playgroud)

为了不为每个键返回单独的对象,需要MERGE()和子查询:

RETURN MERGE(
  FOR c IN my_collection
    RETURN { [ c._id ]: c.sortOrder }
)

[
  {
    "c/12313": 1,
    "c/24223": 2,
    "c/43423": 3,
    ...
  }
]
Run Code Online (Sandbox Code Playgroud)