如何在 ArangoDB 中查询修订历史?
How do I query revision history in ArangoDB?
我在 ArangoDB 中创建的每个文档中都看到了 _rev
,但我还没有看到任何有关使用这些修订来访问文档的更改历史记录的信息。更具体地说,如何查询特定文档的修订历史以及时查看以前的版本甚至特定版本?
我的理解是修订 (_rev
) 属性只是作为标记存在,因此您可以知道字段何时更新。您不能直接更改它,但每次 UPDATE
集合中的文档时,_rev
值都会更新。
要存储历史值,您需要实施一个过程,以便在文档的旧值更新时对其进行归档。
_rev
属性在扫描文档并查看是否更改了任何值时非常有用。不必对文档和您期望看到的内容进行深入比较,您只需将 _rev
属性与您期望看到的内容进行比较即可。如果数据库 return 的 _rev
值与您要检查的值不同,那么您的代码可以响应文档更改,但是需要。
请记住,当您执行 UPDATE
或 UPSERT
命令 (the doco) 时,您可以访问旧版本的文档,并且您可以选择 return OLD
文档内容推送到存档位置,或根据需要进行处理。更新后的文档将在更新后收到一个新的 _rev
值。
OLD
值在 UPDATE
或 UPSERT
命令的 return 之后不会保留,因此您必须立即或更早地将其存档文档将丢失。
我在 ArangoDB 中创建的每个文档中都看到了 _rev
,但我还没有看到任何有关使用这些修订来访问文档的更改历史记录的信息。更具体地说,如何查询特定文档的修订历史以及时查看以前的版本甚至特定版本?
我的理解是修订 (_rev
) 属性只是作为标记存在,因此您可以知道字段何时更新。您不能直接更改它,但每次 UPDATE
集合中的文档时,_rev
值都会更新。
要存储历史值,您需要实施一个过程,以便在文档的旧值更新时对其进行归档。
_rev
属性在扫描文档并查看是否更改了任何值时非常有用。不必对文档和您期望看到的内容进行深入比较,您只需将 _rev
属性与您期望看到的内容进行比较即可。如果数据库 return 的 _rev
值与您要检查的值不同,那么您的代码可以响应文档更改,但是需要。
请记住,当您执行 UPDATE
或 UPSERT
命令 (the doco) 时,您可以访问旧版本的文档,并且您可以选择 return OLD
文档内容推送到存档位置,或根据需要进行处理。更新后的文档将在更新后收到一个新的 _rev
值。
OLD
值在 UPDATE
或 UPSERT
命令的 return 之后不会保留,因此您必须立即或更早地将其存档文档将丢失。