ScalaのMongoDBにCasbahを使用して、プロパティの埋め込みオブジェクトの値のカウントをインクリメントするか、オブジェクトプロパティが存在しない場合は作成するか、存在しない場合はレコード全体を作成する必要があります。可能であれば、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 } }