Полностью ли 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).

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