sql >> Database >  >> NoSQL >> MongoDB

Wat is de beste manier om met samengestelde sleutels om te gaan bij het gebruik van Salat met MongoDB?

belangrijkste Salat-ontwikkelaar hier.

Maak, zoals Milan voorstelde, een hoofdletterklasse voor uw samengestelde sleutel:

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 */ )

Als u bezwaar maakt tegen "_id" als veldnaam, kunt u een globale overschrijving in de context gebruiken om "_id" opnieuw toe te wijzen aan "naturalKey", of ad-hoc @Key-overschrijvingen voor elk object te geven.

Ik hou er persoonlijk niet van om de _id een andere naam te geven in uw modellen, omdat uw Mongo-query's dan de geserialiseerde sleutel "_id" moeten gebruiken, terwijl al uw bedrijfslogica de veldnaam van de hoofdletterklasse ("naturalKey" of wat dan ook) moet gebruiken, maar YMMV .

PS Onze mailinglijst staat op http://groups.google.com/group/scala-salat - Ik zie je vraag daar sneller dan Stack Overflow.




  1. MongoDB InsertBatch JObject - Serialisatiefout

  2. Vraag naar een lijst in een andere lijst in mongodb

  3. MongoDB sorteren versus aggregeren $sort op array-index

  4. Hoe vraag ik naar verschillende waarden in Mongoose, maar retourneer ik het hele document?