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.