首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ReactiveMongo能完全处理扩展的JSON到BSON的转换吗?

ReactiveMongo能完全处理扩展的JSON到BSON的转换吗?
EN

Stack Overflow用户
提问于 2020-09-29 22:02:48
回答 1查看 64关注 0票数 1

我一直在尝试使用reactivemongo将一些文档插入到具有几个BSON类型的mongodb集合中。

我正在使用Play JSON库来解析和操作extended JSON中的一些文档,下面是一个示例:

代码语言:javascript
复制
{
    "_id" : {"$oid": "5f3403dc7e562db8e0aced6b"},
    "some_datetime" : {
        "$date" : {"$date": 1597841586927}
    }
}

我使用的是reactivemongo-play-json,所以我必须导入以下代码,这样我的JsObject在传递给collection.insert.one时会自动转换为reactivemongo BSONDocument

代码语言:javascript
复制
import reactivemongo.play.json.compat._
import json2bson._

不幸的是,一旦我打开我的mongo shell并查看我刚刚插入的文档,结果是:

代码语言:javascript
复制
{
    "_id" : ObjectId("5f3403dc7e562db8e0aced6b"),
    "some_datetime" : {
        "$date" : NumberLong("1597244282116")
    },
}

只有_id被理解为使用扩展JSON描述的BSON类型,我希望some_datetime字段类似于ISODate(),就像我期望看到的是UUID()-type值,而不是它们的扩展JSON描述,如下所示:

代码语言:javascript
复制
{'$binary': 'oKQrIfWuTI6JpPbPlYGYEQ==', '$type': '04'}

我怎样才能确保这个扩展的JSON确实被转换成正确的BSON类型呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-29 23:31:32

问题是我认为是扩展的JSON实际上并不是;我的datetime应该格式化为:

代码语言:javascript
复制
{"$date": {"$numberLong": "1597841586927"}}

而不是

代码语言:javascript
复制
{"$date": 1597841586927}

我的数据源引入了错误的格式--默认情况下,kafka connect mongo源连接器不能将文档序列化为正确的扩展JSON (参见this stackoverflow post)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64121256

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档