我有两个集合:users和微博. 我想知道的AQL查询,允许我插入一个新的推文,并在同一时间更新从一个用户的总推文。
users集合有这样一个文档:{_key:"user1"total_tweets: 0}
在tweets收藏有多个"推文"文档:{_key:"tweet1"from_user:"用户/user1"}
如何插入一条新tweet,同时更新用户中的total_tweets ?
如果我理解正确,您期望使用SQL数据库的触发功能的解决方案。
然而,ArangoDB不提供触发功能。因此,要在插入新tweet后更新用户集合中total_tweets的数量,有两种解决方案:
- 结合"插入推文查询"更新推文计数查询"变成一个大查询,每次当你插入tweet时,执行这个大查询。
- 将这两个动作拆分为两个查询,在代码中逐一执行,并在执行多个查询时使用事务来确保数据库的ACID属性。
一旦您将INSERT
插入到一个集合中,您可以使用NEW
文档来获取该插入的结果(抓取_id
或_key
)。然后,您可以在不同的上运行另一个INSERT/UPDATE/UPSERT/REPLACE
收藏。不能修改同一个集合两次。
文档讨论了如何使用OLD
和NEW
,但似乎没有提到更新多个集合只适用于INSERT
,而不是UPSERT
或REPLACE
(抛出"OLD set multiple times"
错误)。
然而,如果我正确理解你的问题,你想在插入推文后更新一个整数(total_tweets
)。这是事务的领域,它是用代码处理的,而不是通过AQL。