[ArangoDB]:获取对象的第一个元素?

[ArangoDB]: Get the first element of an object?

我正在尝试获取对象的第一个元素scan。在我的例子中,第一个元素的 key 发生了变化。所以我不能用 key 来调用它。这是我正在使用的 AQL 查询,它不起作用。

`FOR d in collection RETURN DISTINCT Object.keys(d.out.scan)[0]`

对象结构:

{
  "out": {
       "scan":{
             "someKeyThatChanges":"someValue"
              }
        }
}

有没有办法获取 scan 的第一个 key

谢谢

此问题的相关 AQL 函数记录在 https://docs.arangodb.com/3.3/AQL/Functions/Document.html

简而言之,如果对象只有一个 user-defined 键,那么您将 能够直接使用 VALUES(_, true) 。

否则,您可以使用 ATTRIBUTES() 来获取对象的数组 属性。您可能希望过滤它以避免名称以“_”开头的键。选择密钥后,请记住:

Attributes can also be accessed using the [] accessor

... the square brackets allow for expressions:

... u[attr1][0][attr2][ CONCAT("fir", "st") ]

演示

LET x = {
  "out": {
       "scan":{
             "someKeyThatChanges":"someValue"
              }
        }
}

LET y = x.out.scan
LET z = y[ ATTRIBUTES(y)[0] ]
RETURN z

要仅获取 out.scan 的第一个键的名称,以下方法可行:

FOR d IN collection
  RETURN ATTRIBUTES(d.out.scan)[0]

要返回该键的映射值,请参考给出的其他答案。