我试图保留DocumentDB的数据历史(至少退一步)。
例如,如果我在文档中有一个名为Name的属性,其值为“Pieter
”。现在我正在改变为“Sam
”,我必须保持历史,以前是“彼得”。
截至目前,我正在考虑预先触发。还有其他方法吗?
如果您正在尝试制作审核日志,我建议您查看事件采购。从事件中构建您的域可确保正确的日志。见https://msdn.microsoft.com/en-us/library/dn589792.aspx和http://www.martinfowler.com/eaaDev/EventSourcing.html
Cosmos DB(以前的DocumentDB)现在通过Change Feed提供更改跟踪。使用Change Feed,您可以侦听特定集合的更改,通过在分区内进行修改来排序。
通过以下方式访问更改Feed:
例如,对于给定的分区(来自doc here中的完整代码示例),这里是来自Change Feed文档的片段,读取来自Change Feed的代码:
IDocumentQuery<Document> query = client.CreateDocumentChangeFeedQuery(
collectionUri,
new ChangeFeedOptions
{
PartitionKeyRangeId = pkRange.Id,
StartFromBeginning = true,
RequestContinuation = continuation,
MaxItemCount = -1,
// Set reading time: only show change feed results modified since StartTime
StartTime = DateTime.Now - TimeSpan.FromSeconds(30)
});
while (query.HasMoreResults)
{
FeedResponse<dynamic> readChangesResponse = query.ExecuteNextAsync<dynamic>().Result;
foreach (dynamic changedDocument in readChangesResponse)
{
Console.WriteLine("document: {0}", changedDocument);
}
checkpoints[pkRange.Id] = readChangesResponse.ResponseContinuation;
}