MongoDB Scala Driver аналог Javascript объекта

Я пытаюсь создать документ с аналогом объекта Javascript Map[String, Any], Когда я пытаюсь вставить новый документ, я получаю следующее исключение:

org.bson.codecs.configuration.CodecConfigurationException: не удается найти кодек для класса java.lang.Object.

Это описание моего тестового документа:

import org.mongodb.scala.bson.ObjectId

object ExampleCollection {
  def apply(test: Map[String, Any]): ExampleCollection = new ExampleCollection(new ObjectId(), test)
}

case class ExampleCollection(_id: ObjectId, test: Map[String, Any])

Это реестр кодеков:

val codecRegistry = fromRegistries(fromProviders(classOf[ExampleCollection]), DEFAULT_CODEC_REGISTRY)

Я написал небольшое приложение и поместил его на github.

На данный момент мой обходной путь будет сериализовать Map[String, Any] и сохраните его как строку.

Итак, мой вопрос будет, что я должен сделать, чтобы использовать Map[String, Any] как тип для моего динамического объекта в mongodb? Или я могу сделать что-то еще, чтобы заставить это работать?

1 ответ

Решение

Вы не можете передать Моно только Any, если оно не знает, что это такое и как его сериализовать / десериализовать. Если это JSON, вы можете попробовать преобразовать его в BSONDocument вместо Map с неизвестным форматом.

Например, смотрите здесь случай для преобразования play-json.

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