【问题标题】:Return object with dynamic keys in AQL在 AQL 中返回具有动态键的对象
【发布时间】:2016-08-22 22:27:31
【问题描述】:

我可以返回类似的东西吗:

{
"c/12313" = 1,
"c/24223" = 2,
"c/43423" = 3,
...
}

来自 AQL 查询?这个想法类似于(这个非工作代码):

for c in my_collection
return { c._id : c.sortOrder }

sortOrder 是我文档中的一些属性。

【问题讨论】:

    标签: arangodb


    【解决方案1】:

    是的,可以有dynamic attribute names:

    LET key = "foo"
    LET value = "bar"
    RETURN { [ key ]: value } // { "foo": "bar" }
    

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

    然而,这并不能返回理想的结果:

    FOR c IN my_collection
      RETURN { [ c._id ]: c.sortOrder }
    
    [
      { "c/12313": 1 },
      { "c/24223": 2 },
      { "c/43423": 3 },
      ...
    ]
    

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

    RETURN MERGE(
      FOR c IN my_collection
        RETURN { [ c._id ]: c.sortOrder }
    )
    
    [
      {
        "c/12313": 1,
        "c/24223": 2,
        "c/43423": 3,
        ...
      }
    ]
    

    【讨论】:

    • 是否可以在 return 语句的 AQL 章节中添加一个链接到对象的数据类型章节?
    • 这非常令人印象深刻 - 在 MERGE 内部 运行 FOR 循环的能力。
    • 返回的是数组中的一个对象。数组是不必要的。有没有办法摆脱它们?
    • 结果总是封装在一个数组中,你不能去掉它。
    猜你喜欢
    • 1970-01-01
    • 2017-11-16
    • 2017-11-26
    • 1970-01-01
    • 2021-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多