我需要增加属性的嵌入对象值的计数,或者如果不存在则创建对象属性,或者如果没有,则创建整个记录,在Scala中使用Casbah for MongoDB。如果有可能的话,也有兴趣直接听听如何在Mongo中这样做。
例如,如果集合中没有对象,则首先添加具有给定_id
的记录,并将vals
默认值1
中的对象添加到属性{{ 1}}。此查询不起作用,但看起来像我预期的那样:
a
这一事件导致以下记录:
import com.mongodb.casbah.Imports._
coll.update(MongoDBObject("_id" -> "obj1"), $inc("vals" -> Map("a" -> 1)), true, false)
现在将一个新对象升入{ "_id" : "obj1", "vals" : { "a" : 1} }
:
vals
产量:
coll.update(MongoDBObject("_id" -> "obj1"), $inc("vals" -> Map("b" -> 1)), true, false)
最后,使用与上一步骤完全相同的查询,对{ "_id" : "obj1", "vals" : { "a" : 1, "b" : 1 } }
的{{1}}属性的值进行upsert / increment |
b
产量:
vals
答案 0 :(得分:2)
原来很简单:
coll.update(MongoDBObject("_id" -> "obj1"), $inc("vals.a" -> 1), true, false)