我刚刚开始使用MongoDB,我试图用Scala编写一个小应用程序来测试Mongo。我创建了以下case类,以便将Documents转换为Scala类:
case class User(
_id: ObjectId,
userId: String,
items: Map[String, Int]
)
object User {
def apply (userId: String , items: Map[String, Int]): User
= new User (new ObjectId, userId, items)
implicit val codecRegistry: CodecRegistry = fromRegistries (fromProviders (classOf [User]), DEFAULT_CODEC_REGISTRY)
}
我收到以下错误但我不知道为什么因为Map键实际上是字符串。
[ERROR] error: Maps must contain string types for keys
[INFO] implicit val codecRegistry: CodecRegistry = fromRegistries (fromProviders (classOf [User]), DEFAULT_CODEC_REGISTRY)
[INFO] ^
[ERROR] one error found
我还将codecRegistry
应用于MongoDatabase。
非常感谢。
答案 0 :(得分:0)
问题是我使用的是为Scala 2.11而不是2.12编译的驱动程序版本。通过从
更改Maven依赖关系<dependency>
<groupId>org.mongodb.scala</groupId>
<artifactId>mongo-scala-driver_2.11</artifactId>
<version>2.2.1</version>
</dependency>
到
<dependency>
<groupId>org.mongodb.scala</groupId>
<artifactId>mongo-scala-driver_2.12</artifactId>
<version>2.2.1</version>
</dependency>
解决了这个问题。