0

当我的应用程序从 MongoDB 服务器收到错误时,我遇到了问题,例如:

想象一下,我在 MongoDB 中进行了查找,但是由于超时,来自 MongoDB 服务器的响应是错误的:

{ $err: "MongoTimeout 由于...bla bla bla..." 代码: 50 }

JacksonDBDecoder 期待我的 Java 类型,例如我的类“Stuff”(包含“价格”和“重量”等多个字段),但是当它接收到之前的 JSON 时,没有任何与“价格”和“重量”匹配的字段",所以结果为空:{ }

空 JSON 将由 mongo-java-driver 类处理(完全是 com.mongodb.QueryResultIterator.throwOnQueryFailure),它永远不会记录原始信息“MongoTimeout due to...bla bla bla...”和 50,因为解码器无法理解来自 MongoDB 服务器的 JSON。

你能帮我配置 mongojack 或 Jackson 来处理来自 MongoDB 服务器的此类响应吗?

非常感谢。

问候,帕科。

4

1 回答 1

0

在与 MongoDB 支持人员交谈后,他们向我确认了以下内容:

“驱动团队阅读了我们最后的评论,他们认为这确实是一个驱动错误。基本上,他们认为驱动应该检测到这是一个查询失败,并使用默认解码器来解码错误文档,而不是使用 MongoJack 注册的自定义解码器.

最相关的部分是这个bug在3.x驱动系列中是不存在的。所以我们对您的建议是升级到 3.2.2 驱动程序(请注意,MongoJack 将 3.2 Java 驱动程序列为其首选依赖项:http://mongojack.org/dependencies.html 。”

所以,这不是 mongojack 问题;)

问候,帕科。

于 2016-03-30T14:57:33.980 回答