ArangoDB 我可以做什么我可以用一个aql查询更新多个集合中单个或多个文档

piv4azn7  于 2022-12-09  发布在  Go
关注(0)|答案(2)|浏览(124)

我在数据库中有两个名为“collection 1”和“collection 2”的集合,我为两个集合中的搜索文档创建了一个名为“myview”的视图
我在这两个系列中都有以下文档-〉

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

如果{“abc”:false}在集合2-〉中

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

但是在我的例子中,这个条件在两个集合中都是(abc == true),那么我如何用一个aql查询更新多个集合中的一个或多个文档呢

r3i60tvu

r3i60tvu1#

不确定是否了解您的需求,但此查询是否可以解决您的问题?

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 }将使查询通过,即使文档不在集合中。

pdkcd3nj

pdkcd3nj2#

如果我们可以对两个集合进行一些更改(如使用update操作逐个进行更新),则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查询中同时查询两个集合

相关问题