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

Codec driver skala Mongodb untuk kelas sifat dan warisan

Saya memiliki masalah yang sama beberapa hari yang lalu tetapi tidak menemukan apa pun dalam dokumentasi tentang sealed traits untuk memodelkan ADT di MongoDB.

Pada akhirnya, saya menggunakan sealed class seperti yang disarankan dalam resmi scala driver github repo .

Jika Anda benar-benar ingin menggunakan sifat (karena definisi metode abstrak), Anda dapat melakukan sesuatu seperti ini:

package example.model

import example.model.adt._
import org.mongodb.scala.bson.ObjectId
import org.mongodb.scala.bson.codecs.Macros._
import org.mongodb.scala.bson.codecs.DEFAULT_CODEC_REGISTRY
import org.bson.codecs.configuration.CodecRegistries.{fromProviders, fromRegistries}

trait MongoModel {
  def _id: ObjectId
}

object MongoModel {
  val codecRegistery = fromRegisteries(fromProviders(classOf[A]), DEFAULT_CODEC_REGISTRY)
}

Sekarang Anda dapat menetapkan ADT untuk A Anda dengan sealed class .

package example.model.adt

import example.model.MongoModel
import org.mongodb.scala.bson.ObjectId

sealed class A

final case class B(_id: ObjectId) extends A with MongoModel
final case class C(_id: ObjectId) extends A with MongoModel

Jawaban ini tidak menyelesaikan pertanyaan secara langsung tetapi memberikan solusi yang layak. Perhatikan bahwa kode ini hanyalah sebuah contoh. Untuk implementasi yang lebih lengkap, Anda dapat melihat repo github ini .



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. otentikasi gambar mongo db docker gagal

  2. MongoDB Membedakan Antara undefined vs. null

  3. Pembaruan bersamaan dari elemen array yang merupakan dokumen yang disematkan di MongoDB

  4. MongoDB memperbarui dokumen ketika sudah ada dengan ReactiveMongo

  5. Mongodb PHP - Integer dengan desimal