【发布时间】:2016-01-04 17:47:36
【问题描述】:
我已按以下格式将 JSON 数据存储在 ArangoDB 集合中。
{
"data": {
"1": [ {"db_name": "DSP"}, {"rel": "2"} ],
"2": [ {"rel_name": "DataSource"}, {"tuple": "201"}, {"tuple": "202"}, {"tuple": "203"} ],
"201": [ {"src_id": "Pos201510070"}, {"src_name": "Postgres"}, {"password": "root"}, {"host": "localhost"}, {"created_date": "20151007"}, {"user_name": "postgres"}, {"src_type": "Structured"}, {"db_name": "postgres"}, {"port": "None"} ],
"202": [ {"src_id": "pos201510060"}, {"src_name": "Postgres"},{"password": "root"}, {"host": "localhost"}, {"created_date": "20151006"}, {"user_name": "postgres"}, {"src_type": "Structured"}, {"db_name": "DSP"}, {"port": "5432"} ],
"203": [ {"src_id": "pos201510060"}, {"src_name": "Postgres"}, {"password": "root"}, {"host": "localhost"}, {"created_date": "20151006"}, {"user_name": "postgres"},{"src_type": "Structured"},{"db_name": "maindb"},{"port": "5432"} ]
}
}
我是 ArangoDB 的新手。我不知道从 ArangoDB 存储和查询数据。在我的数据中没有任何预定义的键,并且数据会随时间填充。我的数据就像一个半结构化的数据,没有任何固定数量的属性,并且由于它的迭代列表结构而有点复杂。
首先,任何人都可以建议我将上述格式存储在 ArangoDB 中的最佳方式。
其次,我想通过以下方式查询这些数据:通过指定任何键(事先不知道,通过在运行时指定),或者通过指定键值对的组合,例如,Key1 == value1,或者使用 AND 或 OR 逻辑运算符组合,例如 Key1 == value1 AND Key2 == value2 OR Key3== value3。
那么,我们如何迭代上面的数据呢?
【问题讨论】:
-
我试过查询“For u in Collecton_name return u” 就像使用 select * from table_name 查询关系数据一样;
-
实际需要什么样的查询结果有点不清楚。例如,要遍历每个文档中的所有属性,您可以在 AQL 中使用嵌套的 FOR 循环,如下所示:
FOR doc IN collection LET attributes = ATTRIBUTES(doc.data) FOR attribute IN attributes RETURN { key: attribute, value: doc.data[attribute] } -
我只想访问那些 db_name == "main_db" 或者我想要列出与属性名称相对应的值,例如 src_type 等。
-
谢谢,我也想知道随着条件数量的增加,我们是否可以像上面那样在 run tike 上制定查询。
-
你能解释一下为什么你的数据结构使用一个对象数组,每个对象只有一个属性吗?看起来您的数据模型定义不明确。为了更好地理解您的问题,发布用于解决问题的等效 SQL 查询可能会有所帮助。