2012-11-28 42 views
1

嵌入对象值的增量我需要增加嵌入对象的值的计数的属性,或者如果它不存在,创建对象的属性,或创建如果整个记录没有之一,采用卡斯巴MongoDB的Scala中。也希望听到如何做到这一点的直接蒙戈,如果有可能的。的Upsert在MongoDB中/卡斯巴/斯卡拉/

例如,如果有集合中没有对象,通过增加与给定_id的记录,对象在vals默认值1财产a开始。此查询不工作,但看起来像我期望它:

import com.mongodb.casbah.Imports._ 
coll.update(MongoDBObject("_id" -> "obj1"), $inc("vals" -> Map("a" -> 1)), true, false) 

这shold导致以下记录:

{ "_id" : "obj1", "vals" : { "a" : 1} } 

现在UPSERT一个新的对象为vals

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

产量:

{ "_id" : "obj1", "vals" : { "a" : 1, "b" : 1 } } 

最后,更新插入/增加值的valsb属性,使用完全相同的查询作为在上一步:

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

产量:

{ "_id" : "obj1", "vals" : { "a" : 1, "b" : 2 } } 

回答

2

原来是很容易的:

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