我需要增加嵌入对象的属性值的计数,或者如果它不存在则创建对象属性,或者如果不存在则创建整个记录,在 Scala 中使用 Casbah for MongoDB。如果可能的话,也有兴趣直接在 Mongo 中执行此操作。
例如,如果集合中没有对象,则首先添加一条带有给定的记录,并在属性的默认值中添加_id
一个对象。此查询不起作用,但看起来像我期望的那样:vals
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 } }
最后,使用与上一步完全相同的查询,更新/增加b
属性的值:vals
coll.update(MongoDBObject("_id" -> "obj1"), $inc("vals" -> Map("b" -> 1)), true, false)
产量:
{ "_id" : "obj1", "vals" : { "a" : 1, "b" : 2 } }