我正在编写有关 Scala 和 Cashbah 的更新查询。当我写这个...
val query = MongoDBObject({"_id" -> uri.toString})
val update: DBObject =
$set("uDate" -> new DateTime) ++
$addToSet("appearsOn") $each(sourceToAppend:_*) ++
$addToSet("hasElements") $each(elementsToAppend:_*) ++
$addToSet("hasTriples") $each (triplesToAppend:_*)
OntologyDocument.dao.collection.update(query, update, upsert = true)
...它给了我这样的编译错误。但是如果我这样写...
No implicit view available from Object{def $each(target: Array[Any]): com.mongodb.casbah.commons.Imports.DBObject; def $each(target: Any*): com.mongodb.casbah.commons.Imports.DBObject} => com.mongodb.casbah.commons.Imports.DBObject.
...然后它编译并成功运行。
val query = MongoDBObject({"_id" -> uri.toString})
val setOps1 = $addToSet("appearsOn") $each(sourceToAppend:_*)
val setOps2 = $addToSet("hasElements") $each(elementsToAppend:_*)
val setOps3 = $addToSet("hasTriples") $each (triplesToAppend:_*)
val update: DBObject = $set("uDate" -> new DateTime) ++ setOps1 ++ setOps2 ++ setOps3
OntologyDocument.dao.collection.update(query, update, upsert = true)
我没明白。
为什么第一个不编译,或者第二个编译?
我是否缺少 Scala 基础知识?