sql >> Base de Datos >  >> NoSQL >> MongoDB

¿Cuál es la mejor manera de lidiar con claves compuestas cuando se usa Salat con MongoDB?

Desarrollador principal de Salat aquí.

Como sugirió Milan, cree una clase de caso para su clave compuesta:

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

Si se opone a "_id" como nombre de campo, puede usar una anulación global en el contexto para reasignar "_id" a "naturalKey" o proporcionar anulaciones de @Key ad hoc en cada objeto.

Personalmente, no me gusta darle a _id un nombre diferente en sus modelos, ya que sus consultas de Mongo deben usar la clave serializada "_id", mientras que toda su lógica comercial debe usar el nombre de campo de clase de caso ("naturalKey" o lo que sea), pero YMMV .

PD Nuestra lista de correo está en http://groups.google.com/group/scala-salat - Veré tu pregunta más rápido allí que Stack Overflow.