mongodb scala驱动程序对应于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中动态对象的一种类型?还是我可以做其他事情以使它起作用?

您一旦不知道它是什么以及如何序列化/对其进行序列化。如果是JSON,则可以尝试将其转换为BSONDocument而不是使用未知格式的Map

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

最新更新