我一直在尝试使用reactivemongo将一些文档插入到具有几个BSON类型的mongodb集合中。
我正在使用Play JSON库来解析和操作extended JSON中的一些文档,下面是一个示例:
{
"_id" : {"$oid": "5f3403dc7e562db8e0aced6b"},
"some_datetime" : {
"$date" : {"$date": 1597841586927}
}
}我使用的是reactivemongo-play-json,所以我必须导入以下代码,这样我的JsObject在传递给collection.insert.one时会自动转换为reactivemongo BSONDocument
import reactivemongo.play.json.compat._
import json2bson._不幸的是,一旦我打开我的mongo shell并查看我刚刚插入的文档,结果是:
{
"_id" : ObjectId("5f3403dc7e562db8e0aced6b"),
"some_datetime" : {
"$date" : NumberLong("1597244282116")
},
}只有_id被理解为使用扩展JSON描述的BSON类型,我希望some_datetime字段类似于ISODate(),就像我期望看到的是UUID()-type值,而不是它们的扩展JSON描述,如下所示:
{'$binary': 'oKQrIfWuTI6JpPbPlYGYEQ==', '$type': '04'}我怎样才能确保这个扩展的JSON确实被转换成正确的BSON类型呢?
发布于 2020-09-29 23:31:32
问题是我认为是扩展的JSON实际上并不是;我的datetime应该格式化为:
{"$date": {"$numberLong": "1597841586927"}}而不是
{"$date": 1597841586927}我的数据源引入了错误的格式--默认情况下,kafka connect mongo源连接器不能将文档序列化为正确的扩展JSON (参见this stackoverflow post)。
https://stackoverflow.com/questions/64121256
复制相似问题