请参阅当前正在更新的文档

时间:2016-03-28 21:07:51

标签: arangodb

我知道可以这样做:

FOR user IN users
FILTER user._key == "7"
UPDATE user WITH { friends: PUSH(user.friends, "8") } IN users

但它有点冗长。我想知道是否有办法做这样的事情:

UPDATE "7" WITH { friends: PUSH(CURRENT.friends, "8") } IN users

1 个答案:

答案 0 :(得分:0)

你是对的;当只更新一个项目时,目前没有简单的方法来处理CURRENT文档。

可以使用DOCUMENT function再次获取原始文档:

UPDATE "7" WITH 
  { friends: PUSH(DOCUMENT("user/7").friends, "8") } IN users

但是,它会获取文档两次,因此效率低于第一次查询。

您可以使用db._explain()重新验证您的第一个查询将是单个索引访问。

I've added a feature request to track this.

使用RETURN语法(if)更持久地将该变量命名为OLD