MongoDB Scala 驱动对应 Javascript 对象

MongoDB Scala Driver counterpart to Javascript Object

我正在尝试创建一个与 Javascript 对象 Map[String, Any] 对应的文档。当我尝试插入一个新文档时,我会得到这个异常:

org.bson.codecs.configuration.CodecConfigurationException: Can't find a codec for class 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 中的动态对象的类型?或者我可以做其他事情让它工作吗?

您不能只将 Any 传递给 mongo,因为它不知道它是什么以及如何 serialize/deserialize 它。 如果是json,您可以尝试将其转换为BSONDocument而不是Map,格式未知。

例如,参见 转换 play-json 的案例。