[英]How to iterate nested JSON with ArangoDB?
我的JSON具有以下結構: [[{"QID":1,"AID":1},{"SubAID":[]}],[{"QID":2,"AID":1},{"SubAID":[2,4]}],[{"QID":3,"AID":1},{"SubAID":[]}],{"MaxArea":"90","MinArea":"16"}]
ArangoDB可以嗎? 我嘗試將其與http-api一起使用(我沒有針對我的語言的驅動程序-D),但出現error 500
,也許我錯了,也許此JSON對ArangoDB不正確。
我也想獲得使用AQL迭代此類JSON的任何示例。 例如,如果我需要QID
為2
的SubAID
值,我應該如何編寫這樣的查詢?
在主要級別上,ArangoDB中的文檔是JSON對象。 您上面在JSON數組中顯示的JSON,因此不會作為文檔原樣接受。
您可以做的是將上述JSON包裝在object屬性中,例如data
:
{"data":[[{"QID":1,"AID":1},{"SubAID":[]}],[{"QID":2,"AID":1},{"SubAID":[2,4]}],[{"QID":3,"AID":1},{"SubAID":[]}],{"MaxArea":"90","MinArea":"16"}]}
關於查詢數據:看起來數據是一個包含數組和對象的數組。 在數組內部,在數組位置0處有一個具有QID
和AID
屬性的對象,在數組位置1處有一個包含SubAid
的對象。
如果對所有數據都是如此,則如下查詢應找到QID
值為2
的文檔:
/* 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]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.