MongoDB Scala驱动程序不允许在案例类中使用Map集合

时间:2018-03-05 01:48:41

标签: mongodb scala

我刚刚开始使用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。

非常感谢。

1 个答案:

答案 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>

解决了这个问题。