1

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