在AQL

2016-08-22 67 views
0
动态密钥返回对象

我可以返回类似:在AQL

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

从AQL查询?这个想法是一样的东西(这非工作代码):

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

其中sortOrder是我的文档某些属性。

回答

3

是的,它有可能具有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, 
    ... 
    } 
] 
+0

也许来自添加一个链接关于对象的数据类型章节的'return'语句的AQL章节? – specimen

+0

扩展文档:https://github.com/arangodb/arangodb/commit/d07c3c848cf9754163d561477f916805077b88d5 – CoDEmanX

+0

这是相当可观的 - 能够运行一个FOR循环_inside_ MERGE。 – specimen