Полностью ли ReactiveMongo обрабатывает расширенное преобразование JSON в BSON?
Я пытался использовать reactivemongo для вставки некоторых документов в коллекцию mongodb с несколькими типами BSON.
Я использую библиотеку Play JSON для анализа и управления некоторыми документами в расширенном JSON, вот один пример:
{
"_id" : {"$oid": "5f3403dc7e562db8e0aced6b"},
"some_datetime" : {
"$date" : {"$date": 1597841586927}
}
}
я использую
reactivemongo-play-json
, поэтому мне нужно импортировать следующее, чтобы мой
JsObject
автоматически преобразуется в реактивный монго
BSONDocument
при передаче его
collection.insert.one
import reactivemongo.play.json.compat._
import json2bson._
К сожалению, как только я открываю свою оболочку mongo и смотрю только что вставленный документ, вот результат:
{
"_id" : ObjectId("5f3403dc7e562db8e0aced6b"),
"some_datetime" : {
"$date" : NumberLong("1597244282116")
},
}
Только
_id
понимался как тип BSON, описанный с использованием расширенного JSON, и я ожидал, что
some_datetime
поле быть чем-то вроде
ISODate()
, так же, как я ожидал увидеть
UUID()
значения -type вместо их расширенного описания JSON, которое выглядит следующим образом:
{'$binary': 'oKQrIfWuTI6JpPbPlYGYEQ==', '$type': '04'}
Как я могу убедиться, что этот расширенный JSON действительно преобразован в правильные типы BSON?
1 ответ
Оказывается, проблема в том, что то, что я считал расширенным JSON, на самом деле не так; мое datetime должно быть отформатировано как:
{"$date": {"$numberLong": "1597841586927"}}
вместо
{"$date": 1597841586927}
Неправильный формат был введен моим источником данных - коннектор источника mongo kafka не сериализует документы в надлежащий расширенный JSON по умолчанию (см. Этот пост stackru).