Arangodb AQL:运算符上的绑定参数

Arangodb AQL:运算符上的绑定参数,arangodb,aql,foxx,arangojs,Arangodb,Aql,Foxx,Arangojs,有没有一种方法可以将绑定参数设置为运算符(“正常绑定参数(带有一个@)只能用于值null、true、false、数字、字符串、数组和对象。 在指定集合名称的地方可以使用集合绑定参数(带有两个@) 在AQL中,通过绑定参数传递运算符是不可能的,因为它可能会更改查询的含义,或者使查询完全无效 考虑以下示例: FOR v IN myCollection FILTER v.value @operator @maxValue 无论在绑定参数中传递了什么值,这个查询都不会进行解析。这是一件好事,因为否则可

有没有一种方法可以将绑定参数设置为运算符(“正常绑定参数(带有一个
@
)只能用于值
null
true
false
、数字、字符串、数组和对象。 在指定集合名称的地方可以使用集合绑定参数(带有两个
@

在AQL中,通过绑定参数传递运算符是不可能的,因为它可能会更改查询的含义,或者使查询完全无效

考虑以下示例:

FOR v IN myCollection
FILTER v.value @operator @maxValue
无论在绑定参数中传递了什么值,这个查询都不会进行解析。这是一件好事,因为否则可能会传递类似于
@operator:“abc”
@maxValue:“>=“
,这意味着在没有绑定参数的情况下可以很好地解析查询,但在插入绑定参数时会产生解析错误

因此,这里最简单的解决方案是通过模板字符串替换将比较运算符注入查询,当然您需要确保请求的比较运算符位于允许的运算符的白名单中。 但是,即使使用绑定参数,您也需要这样做,否则人们可以只发送
@operator:“!=”
@operator:“不在”
或其他您不期望的或可能使您的查询更昂贵的运算符