MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Кой е най-добрият начин за работа с композитни ключове, когато използвате Salat с MongoDB?

основен разработчик на Salat тук.

Както предложи Милан, създайте клас case за вашия съставен ключ:

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

Ако възразите срещу „_id“ като име на поле, можете да използвате глобална замяна в контекста, за да пренасочите „_id“ към „naturalKey“ или да предоставите ad hoc @Key замени за всеки обект.

Аз лично не обичам да давам различно име на _id във вашите модели, тъй като тогава вашите заявки за Mongo трябва да използват сериализирания ключ „_id“, докато цялата ви бизнес логика трябва да използва името на полето за клас случай („naturalKey“ или каквото и да е), но YMMV .

P.S. Нашият пощенски списък е на http://groups.google.com/group/scala-salat - Ще видя въпроса ви по-бързо там, отколкото Stack Overflow.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как да направя заявка за различни стойности в Mongoose?

  2. Идеално ли е MongoDB да използва 150 MB памет?

  3. $lookup вложен масив в mongodb

  4. node.js:Mongodb db.collection.find() не работи, докато collection.insert работи

  5. изберете 2 полета и върнете сортиран масив с техните отделни стойности