与Javascript对象相对应的MongoDB Scala驱动程序

时间:2018-02-19 11:51:16

标签: mongodb scala mongodb-scala

我正在尝试使用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]并将其另存为String。

所以,我的问题是,在mongodb中使用Map[String, Any]作为动态对象的类型我该怎么办?或者我可以做些其他事情让它发挥作用吗?

1 个答案:

答案 0 :(得分:0)

只要它不知道它是什么以及如何序列化/反序列化它就不能将任何传递给mongo。 如果是json,您可以尝试将其转换为BSONDocument而不是格式未知的Map

例如,请参阅here转换play-json的案例。