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

时间:2018-02-24 07:32:26

标签: arangodb aql

我正在尝试获取对象scan的第一个元素。就我而言,第一个元素的key发生了变化。所以我不能用key来调用它。这是我正在使用的AQL查询,它无效。

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

对象结构:

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

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

谢谢

2 个答案:

答案 0 :(得分:2)

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

简而言之,如果对象只有一个用户定义的键,那么你将会这样做 能够直接使用VALUES(_,true)。

否则,您可以使用ATTRIBUTES()来获取对象的数组 属性。您可能希望对其进行过滤以避免名称以" _"开头的键。一旦您选择了密钥,请记住:

  

也可以使用[]访问器

访问属性      

...方括号允许表达式:

     

...你[attr1] [0] [attr2] [CONCAT("冷杉"," st")]

演示

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

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

答案 1 :(得分:1)

要仅获取out.scan的第一个键的名称,以下内容将起作用:

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

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