首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Scala的MongoDB Casbah编译错误

Scala的MongoDB Casbah编译错误
EN

Stack Overflow用户
提问于 2013-06-15 15:47:35
回答 1查看 318关注 0票数 2

我正在对Scala和Cashbah进行更新查询。当我写这个..。

代码语言:javascript
复制
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)

...it给了我一个这样的编译错误。但如果我这样写的话..。

代码语言:javascript
复制
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.

...then编译并成功运行。

代码语言:javascript
复制
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吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-25 15:51:30

这是由于dsl是如何实现的,以及$each的链接。核心问题是,我认为$addToSet不会像预期的那样合并:

代码语言:javascript
复制
val setOps1 = $addToSet("appearsOn") $each(sourceToAppend:_*)
val setOps2 = $addToSet("hasElements") $each(elementsToAppend:_*)
setOps1 ++ setOps2

DBObject = { "$addToSet" : { "hasElements" : { "$each" : [ "another" , "list"]}}}

似乎MongoDBObject ++不递归地合并。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17125352

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档