2015-11-29 112 views
0

我有下一個結構的JSON: [[{"QID":1,"AID":1},{"SubAID":[]}],[{"QID":2,"AID":1},{"SubAID":[2,4]}],[{"QID":3,"AID":1},{"SubAID":[]}],{"MaxArea":"90","MinArea":"16"}]如何迭代嵌套的JSON與ArangoDB?

這對ArangoDB好嗎?我嘗試用http-api(我沒有用於我的語言的驅動程序 - D)推送它,但是我得到了error 500,也許我錯了,也許這個JSON對於ArangoDB不正確。

另外我想獲得迭代這種JSON與AQL的任何例子。例如,如果我需要SubAID的值QID2,我該如何編寫這樣的查詢?

回答

3

在主要級別上,ArangoDB中的文檔是JSON對象。您在JSON數組中顯示的JSON,因此它不會像文檔一樣被接受。

可以執行的操作是包裹上述JSON中的對象的屬性,例如data

{"data":[[{"QID":1,"AID":1},{"SubAID":[]}],[{"QID":2,"AID":1},{"SubAID":[2,4]}],[{"QID":3,"AID":1},{"SubAID":[]}],{"MaxArea":"90","MinArea":"16"}]}

關於查詢數據:它看起來像數據是一個包含陣列和對象陣列。陣列內有一個與在陣列位置0屬性QIDAID的對象,並且在陣列位置1

如果對於所有的數據是真實的含有SubAid一個對象,像如下應該找到的文件的一個查詢,一個QID2

/* iterate over all documents in collection */ 
FOR doc IN collection 

    LET s = (
    /* iterate over embedded attribute "data */ 
    FOR sub IN doc.data 

     /* look at QID at array position 0 */ 
     FILTER sub[0].QID == 2 

     /* first match is sufficient */ 
     LIMIT 1 

     /* return SubAID value from array position 1 */ 
     RETURN sub[1].SubAID 
) 

    /* only return documents with a match */ 
    FILTER LENGTH(s) > 0 

    /* return first result from subquery (subquery result is always an array) */ 
    RETURN s[0]