我对 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 中编码。
有没有更好的方法来解决这个问题?