当我的应用程序收到来自MongoDB服务器的错误时,我遇到了问题,例如:
想象一下,我在MongoDB中进行了查找,但由于超时,MongoDB Server的响应是错误的:
{ $ err:“MongoTimeout由于... bla bla bla ...” 代码:50 }
JacksonDBDecoder期待我的Java类型例如我的类“Stuff”(包含几个字段,如“price”和“weight”),但是当它收到以前的JSON时,那么就没有任何匹配的字段带有“price”和“重量”,所以结果是空的:{}
空的JSON将由mongo-java-drivers类(com.mongodb.QueryResultIterator.throwOnQueryFailure完全处理)处理,并且它永远不会记录原始信息“MongoTimeout由于... bla bla bla ...”和50,因为解码器无法理解MongoDB Server中的JSON。
你能帮我配置mongojack或Jackson来处理MongoDB Server的这类响应吗?
非常感谢。
此致 帕。
答案 0 :(得分:0)
在与MongoDB支持人员交谈后,他们向我确认了以下内容:
"驱动程序团队阅读了我们的最后评论,他们认为这确实是一个驱动程序错误。基本上,他们认为驱动程序应该检测到这是查询失败并使用默认解码器来解码错误文档而不是MongoJack注册的自定义解码器。
最相关的部分是3.x驱动程序系列中不存在此错误。所以我们建议您升级到3.2.2驱动程序(请注意,MongoJack将3.2 Java驱动程序列为首选依赖项:http://mongojack.org/dependencies.html)。"
所以,这不是一个mongojack问题;)
此致 帕。