Reactive mongo无法存储BigInt

时间:2015-08-04 14:33:37

标签: mongodb playframework bigdecimal reactivemongo

我正在使用Play(2.4)和反应性mongo。我正在尝试使用反应性mongo保存以下文档:

{        
    "networkStart" : 42540528726795050063891204319802818560,
    "networkEnd" : 42540528726795654526801011634390171648,
    "lat" : 36.0833,
    "lon" : 140.116
}

使用以下代码

val record = GeoIP(... networkStart, networkEnd, lat, lng ...)
val collection: JSONCollection = reactiveMongoApi.db.collection[JSONCollection]("mycolleciton")

collection.save(Json.toJson(record)).map{ r =>
  Logger.error(s"Has err: ${r.hasErrors}")
}

但没有任何反应。 mongo DB中没有文档,日志中没有错误日志。当我尝试用较低的数字保存记录时,例如代替16777216属性的network*一切正常。

搜索相同。当我使用查询搜索时,例如{networkStart: {$lte #someNum#}}的{​​{1}}等于非常大的整数,我得到异常#someNum#。当我搜索较低的数字时,我得到正确的结果。

我是否错误地管理大数字?如何存储它们并使用反应性mongo进行检索?当我尝试将带有大数字的文档直接手动插入数据库时​​,它可以工作。

修改

我设法通过调试获得验证错误。它说:

[NoSuchElementException: JsError.get]

最有趣的部分是:(,List(ValidationError(List(List((,List(ValidationError(List(List((,List(ValidationError(List(List((,List(ValidationError(List(List((,List(ValidationError(List(unhandled json value: 85060714218195519117058029889198843855),WrappedArray()))))),WrappedArray()))))),WrappedArray()))))),WrappedArray()))))),WrappedArray()))) 但为什么?

0 个答案:

没有答案