1

我需要增加嵌入对象的属性值的计数,或者如果它不存在则创建对象属性,或者如果不存在则创建整个记录,在 Scala 中使用 Casbah for MongoDB。如果可能的话,也有兴趣直接在 Mongo 中执行此操作。

例如,如果集合中没有对象,则首先添加一条带有给定的记录,并在属性的默认值中添加_id一个对象。此查询不起作用,但看起来像我期望的那样:vals1a

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 } }
4

1 回答 1

2

结果很容易:

coll.update(MongoDBObject("_id" -> "obj1"), $inc("vals.a" -> 1), true, false)
于 2012-11-28T19:14:17.760 回答