在AQL

2016-08-22 31 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