在主要层面上,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"}]}
关于查询数据:看起来数据是一个包含数组和对象的数组。在数组内部有一个具有属性QID
且AID
位于数组位置 0 的对象,以及一个包含SubAid
位于数组位置 1 的对象。
如果所有数据都如此,则如下查询应该找到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]