更新ArangoDB中不同集合中的两个文档?

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

我有两个系列:用户推文。我想知道允许我插入新推文并同时更新来自用户的推文总数的AQL查询。
用户集合中有一个文档,类似于:{ _key:“用户1”,推文总数:0个字符}
tweets集合中,有多个“tweet”文档,如:{关键字:“tweet 1,”发件人:“用户/用户1”}
我如何插入一条新的tweet,同时更新用户中的total_tweets?

wmtdaxz3

wmtdaxz31#

如果我没理解错的话,您期待的是一个使用SQL数据库的触发器功能的解决方案。
然而,ArangoDB不提供触发器功能,因此,在插入新的tweet后,要更新用户集合中total_tweets的数量,有两种解决方案。
1.将“插入tweet查询”和“更新tweet计数查询”合并成一个大查询,每次插入tweet时,都执行这个大查询。
1.将这两个操作分离为两个查询,在代码中逐个执行,并使用一个事务确保在执行多个查询时数据库的ACID属性。

ar7v8xwq

ar7v8xwq2#

一旦对一个集合执行了INSERT操作,就可以使用NEW文档来获取插入的结果(获取_id_key)。然后可以在***不同的***集合上运行另一个INSERT/UPDATE/UPSERT/REPLACE。不能对同一个集合修改两次。
documentation讨论了如何使用OLDNEW,但似乎没有提到更新多个集合只适用于INSERT,而不适用于UPSERTREPLACE(抛出"OLD set multiple times"错误)。
但是,如果我没有理解错你的问题,你想在插入tweet后更新一个整数(total_tweets),这是transactions的领域,它是用代码处理的,而不是通过AQL。

相关问题