Mongo casbah:无法解析“++”

Mongo casbah: cannot resolve "++"

Casbah 版本:2.8.0

下面的例子:http://api.mongodb.com/scala/casbah/2.0/tutorial.html#combining-multiple-dbobjects

我将下面用作导入语句。

import com.mongodb.casbah.AggregationOutput
import com.mongodb.casbah.Imports._
import com.mongodb.casbah.TypeImports._
import com.mongodb.casbah.commons.{MongoDBList, MongoDBObject}

下面 ++ 出现 Cannot resolve symbol ++ 错误。

val basic = MongoDBObject(
  "id" -> "123",
  "project" -> "pp123"
)

val createdTime = MongoDBObject(
  "createdTime" -> MongoDBObject(
    "$exists" -> false
  )
)

val query = basic ++ createdTime

我尝试 Google 但没找到多少,official documentation 也没有帮助...

我想我只是缺少 ++ 的导入语句,但我不知道要导入哪个。

源代码的快速 grep 揭示了 MongoDBObject class 上的两个 ++ 方法:

> grep -r "def ++" .
./casbah-commons/src/main/scala/MongoDBObject.scala:  def ++(pairs: (String, Any)*): DBObject = {
./casbah-commons/src/main/scala/MongoDBObject.scala:  def ++[A <% DBObject](other: A): DBObject = {

第二个看起来与此相关。 <% 表示视图绑定,因此您需要从 MongoDBObjectDBObject.

的隐式转换
> grep -r "implicit .*: DBObject =" .
./casbah-commons/src/main/scala/Implicits.scala:  implicit def map2MongoDBObject(map: scala.collection.Map[String, Any]): DBObject =
./casbah-commons/src/main/scala/Implicits.scala:  implicit def unwrapDBObj(in: MongoDBObject): DBObject = in.underlying

看来您可以导入 com.mongodb.casbah.Implicits._ 来获取它。