Реактивная монго не в состоянии хранить BigInt
Я использую Play (2.4) с реактивным монго. Я пытаюсь сохранить следующий документ, используя реактивное монго:
{
"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 нет документов и нет журналов ошибок в журналах. Когда я пытаюсь сохранить запись с меньшими числами, например 16777216
на месте network*
атрибуты все работает отлично.
То же самое для поиска. Когда я ищу с помощью запроса, например, {networkStart: {$lte #someNum#}}
за #someNum#
равно очень большое целое число, я получаю исключение [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())))
где самая интересная часть это: List(unhandled json value: 85060714218195519117058029889198843855)
, Но почему?