sql >> Databáze >  >> NoSQL >> MongoDB

Jaký je nejlepší způsob, jak se vypořádat s kompozitními klíči, když používáte Salat s MongoDB?

hlavní vývojář Salat zde.

Jak Milan navrhl, vytvořte třídu případu pro svůj složený klíč:

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

Pokud máte námitky proti "_id" jako názvu pole, můžete použít globální přepsání v kontextu k přemapování "_id" na "naturalKey" nebo zadat ad hoc přepsání @Key pro každý objekt.

Osobně se mi nelíbí, že ve vašich modelech dáváte _id jiný název, protože vaše dotazy Mongo musí používat serializovaný klíč „_id“, zatímco veškerá vaše obchodní logika musí používat název pole třídy případu („naturalKey“ nebo cokoliv jiného), ale YMMV .

P.S. Náš seznam adresátů je na adrese http://groups.google.com/group/scala-salat - Tam uvidím vaši otázku rychleji než Stack Overflow.




  1. Nadřazený objekt cesty JSON nebo ekvivalentní dotaz MongoDB

  2. Jak najít položky pomocí regulárního výrazu v Mongoose

  3. Zlepšení výkonu textového vyhledávání MongoDB

  4. Předávání parametrů modelu do modelu mongoose