2012-11-28 61 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)