4

When trying to bulk load a list of DBObject's via insert, I get no implicit view available.

collection.insert(listObjects) // listObjects is a List[DBObject]

[error]Test.scala:139: No implicit view available from List[com.mongodb.casba
h.Imports.DBObject] => com.mongodb.casbah.Imports.DBObject.

What does this error mean? How can I resolve?

Reference:

def insert [A] (docs: List[A])(implicit arg0: (A) ⇒ DBObject) : WriteResult

4

1 回答 1

6

方法 insert 将采用任何 List,但要将数据存储在 Mongo 中,casbah 需要将其转换为 DBObject。为此,它使用隐式转换,在 casbah 中可用于各种数据类型。但是,您尝试插入的数据在您的范围内没有实现或可用的转换。为了解决这个问题,要么导入隐式转换器,要么实现一个。

在您的情况下,您可能缺少导入。确保你得到:

import com.mongodb.casbah.Imports._

并尝试替换listObjectsMongoDBList(listObjects:_*)

编辑:

要回答您的评论,请尝试在 REPL 中:

scala> val a = List(1,2,3,4,5,6)
a: List[Int] = List(1, 2, 3, 4, 5, 6)

scala> List(a:_*)
res0: List[Int] = List(1, 2, 3, 4, 5, 6)

scala> List(a)
res1: List[List[Int]] = List(List(1, 2, 3, 4, 5, 6))

: _*将获取元素而不是列表,并避免创建列表列表。

于 2013-09-27T18:52:13.417 回答