MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Apa cara terbaik untuk menangani kunci compsite saat menggunakan Salat dengan MongoDB?

pengembang Salat utama di sini.

Seperti yang disarankan Milan, buat kelas kasus untuk kunci komposit Anda:

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

Jika Anda menolak "_id" sebagai nama bidang, Anda dapat menggunakan penggantian global dalam konteks untuk memetakan ulang "_id" ke "naturalKey", atau menyediakan penggantian @Key ad hoc pada setiap objek.

Saya pribadi tidak suka memberi _id nama yang berbeda dalam model Anda karena kueri Mongo Anda harus menggunakan kunci serial "_id" sementara semua logika bisnis Anda harus menggunakan nama bidang kelas kasus ("naturalKey" atau apa pun), tetapi YMMV .

P.S. Milis kami ada di http://groups.google.com/group/scala-salat - Saya akan melihat pertanyaan Anda lebih cepat daripada Stack Overflow.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB menemukan rentang tanggal jika tumpang tindih dengan tanggal lain

  2. Deferensiasi mongoengine terjadi setelah menggunakan select_related()

  3. Luwak:bagaimana cara mengatur bidang skema menjadi ID?

  4. Kueri MongoDB dengan nilai nol

  5. Luwak findById() dalam objek skema/subdokumen bersarang - agregasi