我正在使用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())))
。 但为什么?