0

我正在尝试创建一个与 Javascript Object 对应的文档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 中用作我的动态对象的类型?或者我可以做其他事情来让它工作吗?

4

1 回答 1

0

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

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

于 2018-02-19T12:59:48.903 回答