我如何使用单个aql查询来更新多个集合中的单个或多个文档

时间:2019-11-12 14:58:44

标签: arangodb

我在数据库中有两个名称分别为“ collection1”和“ collection2”的集合 我为两个集合中的搜索文档创建了一个名称为“ myview”的视图

两个收藏夹中都有以下文档 ->

{
    "name": "Mac",
    "age": 23,
    "contry":"India",
    "abc":true
  } 

如果collection2中的{“ abc”:false},则此aql查询工作正常  ->

FOR doc IN myview search doc.abc == true update doc with {"alive":true} in collection1 LET updated = OLD RETURN updated

但是在我的情况下,两个集合中的条件均为(abc == true)true  那么如何通过单个aql查询来更新多个集合中的单个或多个文档

2 个答案:

答案 0 :(得分:0)

不确定要了解什么,但是此查询可以解决您的问题吗?

FOR doc IN myview 
    SEARCH doc.abc == true 
    UPDATE doc WITH {"alive":true} IN collection1 OPTIONS { ignoreErrors: true }
    UPDATE doc with {"alive":true} IN collection2 OPTIONS { ignoreErrors: true }
    LET updated = OLD 
    RETURN updated

OPTIONS { ignoreErrors: true }将使查询通过,即使文档不在集合中。

答案 1 :(得分:0)

如果我们可以像这样对两个集合一一使用更新操作,那么darkheir给出的查询就可以正常工作

对于收集1->

 FOR doc IN myview 
        SEARCH doc.abc == true 
        UPDATE doc WITH {"alive":true} IN collection1 OPTIONS { ignoreErrors: true }
        LET updated = OLD 
        RETURN updated

,对于集合2->

FOR doc IN myview 
    SEARCH doc.abc == true 
    UPDATE doc WITH {"alive":true} IN collection2 OPTIONS { ignoreErrors: true }
    LET updated = OLD 
    RETURN updated

如何在单个aql查询中查询两个集合