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 的案例。
我正在尝试创建一个与 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
,格式未知。
例如,参见