如何更新/删除嵌入对象



给定以下领域模型:

case class Benefits(id: Int, benefitPlan: String, comment : String)
case class Employee(empNum : Int, benefits : List[Benefit])

我一直在使用Salat来帮助派生/反序列化这些对象。然而,我有点困惑,如何删除/更新员工对象的福利列表中的特定对象,因为我知道的好处。需要删除/更新的对象Id ?

我不想迭代完整的利益列表,以便能够更新单个对象,因为该列表可能在运行时包含大量对象。是否有比获得emp对象更好的方法,迭代列表,直到找到所需的对象,更新它,然后保存emp对象?

在这种情况下,我会说您的benefits应该是Map[Int, Benefits]

如果你使用Map,你的更新/删除将是O(1)而不是线性时间。

如果您需要随机访问和更新其中的元素,

List不是一个好的选择。

我建议你看看这篇关于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
}

相关内容

  • 没有找到相关文章

最新更新