MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Was ist der beste Weg, um mit zusammengesetzten Schlüsseln umzugehen, wenn Salat mit MongoDB verwendet wird?

Hauptentwickler von Salat hier.

Erstellen Sie, wie von Milan vorgeschlagen, eine Fallklasse für Ihren zusammengesetzten Schlüssel:

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

Wenn Sie „_id“ als Feldnamen ablehnen, können Sie eine globale Außerkraftsetzung im Kontext verwenden, um „_id“ „naturalKey“ neu zuzuordnen, oder Ad-hoc-@Key-Überschreibungen für jedes Objekt bereitstellen.

Ich persönlich mag es nicht, der _id in Ihren Modellen einen anderen Namen zu geben, da Ihre Mongo-Abfragen dann den serialisierten Schlüssel "_id" verwenden müssen, während Ihre gesamte Geschäftslogik den Feldnamen der Fallklasse ("naturalKey" oder was auch immer) verwenden muss, aber YMMV .

P.S. Unsere Mailingliste finden Sie unter http://groups.google.com/group/scala-salat - Dort sehe ich Ihre Frage schneller als bei Stack Overflow.