[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]
要返回该键的映射值,请参考给出的其他答案。
我正在尝试获取对象的第一个元素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]
要返回该键的映射值,请参考给出的其他答案。