sql >> Databasteknik >  >> NoSQL >> MongoDB

Vad är det bästa sättet att hantera sammansatta nycklar när du använder Salat med MongoDB?

huvudsakliga Salat-utvecklare här.

Som Milan föreslog, skapa en fallklass för din sammansatta nyckel:

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

Om du invänder mot "_id" som ett fältnamn kan du använda en global åsidosättning i sammanhanget för att mappa om "_id" till "naturalKey", eller tillhandahålla ad hoc @Key åsidosättningar på varje objekt.

Jag tycker personligen inte om att ge _id ett annat namn i dina modeller eftersom dina Mongo-frågor måste använda den serialiserade nyckeln "_id" medan all din affärslogik måste använda case-klassens fältnamn ("naturalKey" eller vad som helst), men YMMV .

P.S. Vår e-postlista finns på http://groups.google.com/group/scala-salat - Jag ser din fråga snabbare där än Stack Overflow.




  1. Hantera att skicka två parametrar i ett API-anrop i Angular App

  2. Denna nod startades inte med alternativet replSet

  3. Få en distinkt aggregering av ett matrisfält över index

  4. Fel vid aktivering av datakryptering med lokal nyckel MONGODB