sql >> Database teknologi >  >> NoSQL >> MongoDB

Hvad er den bedste måde at håndtere sammensatte nøgler, når du bruger Salat med MongoDB?

vigtigste Salat-udvikler her.

Som Milan foreslog, opret en sagsklasse for din sammensatte nøgle:

case class FooKey(someRelatedId: String, email: String)

case class Foo(@Key("_id") naturalKey: FooKey) {

  // use @Persist if you want these fields serialized verbatim to Mongo - see https://github.com/novus/salat/wiki/Annotations for details
  @Persist val email =  naturalKey.email
  @Persist val someRelatedId = naturalKey.someRelatedId

}

object FooDAO extends SalatDAO[Foo, FooKey](collection = /*  some Mongo coll */ )

Hvis du gør indsigelse mod "_id" som feltnavn, kan du bruge en global tilsidesættelse i konteksten til at omdanne "_id" til "naturalKey", eller levere ad hoc @Key-tilsidesættelser på hvert objekt.

Jeg kan personligt ikke lide at give _id et andet navn i dine modeller, da dine Mongo-forespørgsler skal bruge den serialiserede nøgle "_id", mens al din forretningslogik skal bruge case-klassens feltnavn ("naturalKey" eller hvad som helst), men YMMV .

P.S. Vores mailingliste er på http://groups.google.com/group/scala-salat - Jeg vil se dit spørgsmål hurtigere der end Stack Overflow.




  1. MongoDB 2.6 opdateringsfejl

  2. redis lua script vs. enkeltopkald

  3. Flersproget datamodellering på MongoDB

  4. hvordan man flytter data fra mysql til redis