ArangoDB AQL 当且仅当条件存在时更新文档

问题描述 投票:0回答:0

我对 ArangoDB 很陌生,如果这个问题有明显的答案,请原谅。我已经阅读了文档并搜索了 StackOverflow(基本的 UPSERT/INSERT/UPDATE 代码从中大量提取),但没有发现任何似乎完全相关的内容。

我正在尝试创建和建立一个相对简单的数据库,其中记录的形式为

{
    id: "some_id",
    keywords: [ "kw1", "kw2, . . . ],
    date: 12345678
}

当且仅当日期(表示为自纪元以来的整数秒数)小于新日期时,我想创建新记录或更新记录。

我目前的 AQL 看起来(有点示意性地)像

UPSERT { id: "some_id" }
  INSERT { id: "some_id", keywords: [ kw1, kw2 ], date: new_date }
  UPDATE { date: OLD.date < new_date ? new_date : OLD.date, 
           keywords: OLD.date < new_date ? [ kw3, kw4, kw4 ] : OLD.keywords }
  IN kwds

这行得通,但在我看来,我做的工作比必要的多,更新记录,即使它没有改变。

我不能假设新记录的日期大于旧记录,因为输入数据不一定按日期顺序排列,而且要排序的记录太多(原始数据集超过 1 TB)大小)。

如果相关的话,我正在使用 python-arango 库在 python 中编码。

有没有更好的方法来解决这个问题?

arangodb aql
© www.soinside.com 2019 - 2024. All rights reserved.