0

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

我在两个集合中都有以下文档->

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

如果 {"abc" : false} 在 collection2 -> 中,此 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 查询更新多个集合中的单个或多个文档

4

2 回答 2

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 查询中查询两个集合

于 2019-11-18T14:26:16.237 回答
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 }即使文档不在集合中,也会使查询通过。

于 2019-11-15T10:41:31.050 回答