解码 MongoDB resumeToken BSON

pech0rin

我最近开始测试 ChangeStreams,这是 MongoDB 3.6 中添加的新功能,用于监视集合中的更改,但我无法对 resumeToken 进行解码。

我试过了:

resumeToken = change["_id"]
# Check validity
bson.is_valid(resume_token)

Error: TypeError: BSON data must be an instance of a subclass of bytes

好的,我想这意味着我需要直接访问二进制数据。

print("is valid:", bson.is_valid(resume_token['_data']))

is valid:False

我很困惑,因为查看ChangeStream Docs_id字段应该是 BSON 文档:

{
   _id : { <BSON Object> },
   "operationType" : "<operation>",
   "fullDocument" : { <document> },
   "ns" : {
      "db" : "<database>",
      "coll" : "<collection"
   },
   "documentKey" : { "_id" : <ObjectId> },
   "updateDescription" : {
      "updatedFields" : { <document> },
      "removedFields" : [ "<field>", ... ]
   }
}

我想解码它的原因是为了监视时间戳。有谁知道如何解码 resumeToken BSON 文档?

编辑:示例 resumeToken

{'_data': b'\x82Z\xc2\x8c\xf3\x00\x00\x00\x01Fxtime\x00x\x80\x00\x01b\x87\xf6\x97\xb1d_id\x00dZ\xc2\x8c\xf3`\x88\x05\x00\x01\x98\xa4\xd8\x00Z\x10\x04\xac\x1eBC{\xf5E\xc4\xa0\xd8\x89\xca\x830\x99\x9e\x04'}
万巴赫蒂亚尔

有谁知道如何解码 resumeToken BSON 文档?

默认情况下,MongoDB 驱动程序会为您解码此 BSON 文档。如您所见, :_data和 中有两个文档键_typeBits但是,这些键中包含的值是二进制数据。

例如在当前版本的 MongoDB (3.6.3) 中:

{ _id: { "_data": BinData(0, "...")
         "_typeBits": BinData(0, "...") 
       }
}

二进制数据是在 MongoDB 服务器上构建的,是KeyString的对象对象使用(按顺序)编码:clusterTime, documentKey, UUID另见resume_token.cpp

对于 MongoDB 驱动程序的当前版本,没有可用的方法来解码KeyString客户端/应用程序端对象。

注意:目前有一个与此相关的开放票证SERVER-32283

我想解码它的原因是为了监视时间戳

根据您需要此时间戳的用途,因为编码的内容以clusterTime您实际上可以按时间顺序对二进制进行排序。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

来自Blob的BSON解码

来自分类Dev

编码对象时未使用MongoDB BSON编解码器

来自分类Dev

MongoDB JSON还是BSON?

来自分类Dev

Haskell MongoDB反对Bson

来自分类Dev

MongoDB Bson 文档深度

来自分类Dev

何时在mongodb中使用BSON?

来自分类Dev

Java MongoDB / BSON类混淆

来自分类Dev

在BSON中解码,该接口由私有结构实现

来自分类Dev

mongodb C#如何使用BSON文档

来自分类Dev

找不到laravel MongoDB \ BSON \ UTCDateTime类

来自分类Dev

MongoDB BSON日期类型的查询和聚合

来自分类Dev

C无法检索mongodb BSON数组

来自分类Dev

如何增加mongodb BSON文档大小

来自分类Dev

BSON错误为MongoDB创建新的BsonDocument

来自分类Dev

MongoDB中的MongoDB \ BSON \ ObjectID丢失了JSON编码

来自分类Dev

MongoDB中的MongoDB \ BSON \ ObjectID丢失了JSON编码

来自分类Dev

Elixir Bson解码器在utf8> 16#FF上失败

来自分类Dev

如何让mongodb解码结构传递给函数

来自分类Dev

Is order of array of bson.M maintained in mongodb go driver?

来自分类Dev

是否有MongoDB的最大bson大小可以解决?

来自分类Dev

使用GSON和TypeAdapter将BSON(mongoDB)读入POJO

来自分类Dev

Bash-将MONGODB BSON转换为JSON

来自分类Dev

找不到模块'mongodb / node_modules / bson'

来自分类Dev

使Json.NET + MongoDB Bson一起玩

来自分类Dev

MongoDB 40415:BSON字段“ create.bsonType”是未知字段

来自分类Dev

操纵mongodb的bson.D输出格式

来自分类Dev

芝加哥老板将Bson对象保存到mongoDB中

来自分类Dev

Bash-将MONGODB BSON转换为JSON

来自分类Dev

如何在MongoDB 3.2中使用DBPointer bson类型