在MongoDB / Casbah / Scala /中嵌入对象值的增量进行Upsert

时间:2012-11-28 19:14:18

标签: scala mongodb casbah

我需要增加属性的嵌入对象值的计数,或者如果不存在则创建对象属性,或者如果没有,则创建整个记录,在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

1 个答案:

答案 0 :(得分:2)

原来很简单:

coll.update(MongoDBObject("_id" -> "obj1"), $inc("vals.a" -> 1), true, false)