我有一个这样的JSON结构
{
"Items": {
"Apple": {
"Type": 2,
"keyVal": "6044e3a3-c064-4171-927c-2440e2f65660"
},
"Lemons": {
"Type": 1,
"keyVal": "79c45f4d-4f62-4c8e-8de1-79e04fc9b95d"
}
},
"Species": 0,
"Name": "Test Fruit",
"Description": "Test Des",
"Creator": "xyz",
"SKey" : "123"
}
这是一个名为水果的集合。
查询:我试图编写AQL查询来查找SKey,其中Items中的KeyVal值是某个值。
我习惯于使用SQL语法,但这是我第一次冒险使用AQL(Arango DB)。
任何有关语法的帮助都是值得的
1条答案
按热度按时间vmdwslir1#
AQL的基础知识在这里解释得很好:https://docs.arangodb.com/3.11/aql/
是最小的SQL
SELECT ... WHERE
语句。顺便说一句:这里有一个比较介绍:
https://arangodb.com/why-arangodb/sql-aql-comparison/
学习AQL的一个好方法是尝试一小段代码,然后返回结果进行检查,逐渐创建更复杂的查询。
例如,让我们返回一个嵌套的keyVal值:
要按Apple keyVal过滤并返回SKey,您可以执行以下操作:
你也可以同时返回两个keyVal值:
要返回SKey,如果其中一个等于某个值,请尝试以下操作:
注意:这里使用
IN
作为数组运算符,就像{array}中包含的是{value}。要返回所有硬编码属性路径的keyVal值,可以使用ATTRIBUTES()AQL函数:
要在任何嵌套的keyVal值匹配时返回SKey,我们可以这样做:
注意:这使用子查询来捕获中间结果。
要测试是否包含所有指定的值,可以执行以下操作:
ALL IN是一个数组比较运算符。
请注意,如果您希望使用索引而不对属性路径以及不同的查询进行硬编码,则需要更改数据模型。