簡體   English   中英

如何使用ArangoDB迭代嵌套的JSON?

[英]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的任何示例。 例如,如果我需要QID2SubAID值,我應該如何編寫這樣的查詢?

在主要級別上,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處有一個具有QIDAID屬性的對象,在數組位置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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM