Реактивная монго не в состоянии хранить 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), Но почему?

0 ответов

Другие вопросы по тегам