0

我在 Azure Cosmos DB 上运行 Mongo API(4.0 版)。我使用 Cosmos 的ChangeStream从 CosmosDB Mongo API 集合中捕获事件。Cosmos DB 的 ChangeStream 文档类似于 Mongo DB 的文档。

CosmosDB 的 Mongo API内部resumeToken的数据ChangeStreamDocument是一个 BsonDocument,其中包含两个字段 (_datakind),如下所示:

"_data" -> {BsonBinary@2892} "BsonBinary{type=0, data=[123, 34, 86, 34, 58, 50, 44, 34, 82, 105, 100, 34, 58, 34, 88, 48, 107, 66, 65, 80, 122, 108, 106, 120, 115, 61, 34, 44, 34, 67, 111, 110, 116, 105, 110, 117, 97, 116, 105, 111, 110, 34, 58, 91, 123, 34, 70, 101, 101, 100, 82, 97, 110, 103, 101, 34, 58, 123, 34, 116, 121, 112, 101, 34, 58, 34, 69, 102, 102, 101, 99, 116, 105, 118, 101, 32, 80, 97, 114, 116, 105, 116, 105, 111, 110, 32, 75, 101, 121, 32, 82, 97, 110, 103, 101, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 123, 34, 109, 105, 110, 34, 58, 34, 34, 44, 34, 109, 97, 120, 34, 58, 34, 70, 70, 34, 125, 125, 44, 34, 83, 116, 97, 116, 101, 34, 58, 123, 34, 116, 121, 112, 101, 34, 58, 34, 99, 111, 110, 116, 105, 110, 117, 97, 116, 105, 111, 110, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 34, 92, 34, 51, 49, 92, 34, 34,125, 125, 93, 125]}"

“_kind”-> {BsonInt32@2928} “BsonInt32{value=1}”

转换 的二进制数据_data产生以下字符串。

{"V":2,"Rid":"X0kBAPzljas=","Continuation":[{"FeedRange":{"type":"有效分区键范围","value":{"min":"", "max":"FF"}},"State":{"type":"continuation","value":""31""}}]}

Rid是集合的资源 id 。value字段中的数据State似乎随着每个操作的更改流文档而增加。

我有一个两部分的问题

  • 给定使用本文档中的 ChangeStream 检索到的任何两个操作,是否可以比较它们ResumeToken的 s(或ChangeStreamDocuments)以建立它们之间的发生之前的关系?如果可以使用valueinState字段,是否保证每次操作都会单调增加?

  • 虽然在clusterTime里面有命名ChangeStreamDocument的字段,但该字段总是有一个空值。是否可以使用 CosmosDB 的 ChangeStream 获取与操作关联的时间戳?

4

0 回答 0