0

次のドメイン モデルが与えられた場合:

case class Benefits(id: Int, benefitPlan: String, comment : String)

case class Employee(empNum : Int, benefits : List[Benefit])

これらのオブジェクトをデシリアライズ/デシリアライズするために Salat を使用しています。ただし、削除/更新するオブジェクトのbenefit.idを知っている場合、従業員オブジェクトの福利厚生リストから特定のオブジェクトを削除/更新する方法について少し混乱していますか?

このリストは実行時に多数のオブジェクトを保持する可能性があるため、単一のオブジェクトを更新できるようにするために完全な利点リストを反復したくありません。emp オブジェクトを取得し、目的のオブジェクトが見つかるまでリストを繰り返し、更新してから emp オブジェクトを保存するよりも良い方法はありますか?

4

2 に答える 2

2

この場合、あなたbenefitsMap[Int, Benefits].

を使用するMapと、更新/削除は線形時間ではなく O(1) になります。

Listその中の要素にランダムにアクセスして更新する必要がある場合は、良い選択ではありません。

于 2011-12-04T10:46:58.780 に答える
0

Casbah と Salat に関するこの記事を調べることをお勧めします (MongoDB に salat を使用している場合)。

def removeBenefit(empNum : Int, benefitId: Int)= {
  val updateQuery = $pull("benefits " -> MongoDBObject("id" -> benefitId))
  val query = MongoDBObject("empNum " -> empNum )
  modify(query, updateQuery) // your findAndModify operation goes here
}
于 2014-01-10T22:01:41.527 に答える