AQL:(为什么)像 HAS、UNSET 这样的文档功能不起作用?

AQL: (why) are document functions like HAS, UNSET not working?

我尝试使用文档函数,如 HAS、UNSET 等(希望如此),就像文档中描述的那样。不幸的是,导致语法错误 1501。我还看到它们在 AQL 编辑器中没有像其他信号词那样突出显示。

这是一个例子(我也在教程服务器上测试过):

FOR u IN users
    LIMIT 1
    UNSET(u, "birthday")
RETURN u

有人看出哪里出了问题吗?

好的,好的...写完之后我明白了:必须将其分配给某物。例如

FOR u IN users
    LIMIT 1
    LET tmp = UNSET(u, "birthday")
RETURN tmp

抱歉发帖...但我保留了它,也许其他初学者也会犯同样的错误:-)

AQL 函数不能出现在 AQL 的顶层。顶层唯一允许的是 FORFILTERRETURNLETCOLLECTSORTINSERT等 如果应该执行一个函数,它的 return 值应该在 LET 语句中捕获以供进一步处理,或者,如果不需要进一步处理,可以在 RETURN 中调用该函数s 表达式,例如

FOR u IN users
  LIMIT 1
  RETURN UNSET(u, "birthday")

这可能对其他用户有帮助:UNSET 函数实际上并不替换集合中的文档。为此,您需要 运行

FOR u IN users
    LIMIT 1
    LET u_new = UNSET(u, "birthday")
    REPLACE u WITH u_new IN users