我们如何用arango写条件,包括for循环。我可以在下面详细说明这个要求。
我的要求是,如果arango集合中存在特定的属性(数组类型),我将从集合中读取数据(这需要一个循环),否则,可能会执行以下操作:
1.返回空值
1.返回空字符串“”
1.什么也不做。
这在阿朗戈有可能实现吗?
帮助方式可以是--〉
-- has(集合名称,属性名称)
--三元运算符?:
let attribute1 = has(doc,"attribute1") ?(
for name in doc.attribute1.names
filter name.language == "xyz"
return name.name
) : ""
但这并不奏效。看起来arango编译器首先试图编译for循环,发现空值并报告如下错误。相反,它应该首先编译“has”函数,以使用三元运算符。
collection or array expected as operand to FOR loop; you provided a value of type 'null' (while executing)
如果有更好的方法,会很感激的建议!!
提前感谢!Nilotpal
1条答案
按热度按时间mrfwxfqh1#
我是来自ArangoDB的Fakhrany。
关于您的问题,这是一个已知的限制。来自https://www.arangodb.com/docs/3.8/aql/fundamentals-limitations.html:
以下是AQL查询的其他已知限制:
在表达式中使用的子查询将从这些表达式中提取出来并预先执行。这意味着子查询不参与操作数的延迟求值,例如在三元运算符中。另请参阅子查询求值。
此处还应注意三元运算符:https://www.arangodb.com/docs/3.8/aql/operators.html#ternary-operator。
对“做什么”问题的回答可以是在枚举属性之前使用FILTER:
其他解决方案也是可能的。这取决于用例。