MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Bộ mã hóa trình điều khiển Mongodb scala cho các lớp đặc điểm và kế thừa

Tôi đã có cùng mối quan tâm chỉ vài ngày trước nhưng không tìm thấy bất kỳ điều gì trong tài liệu liên quan đến sealed traits để lập mô hình ADT trong MongoDB.

Cuối cùng, tôi đã sử dụng sealed class như được đề xuất trong chính thức đại diện github trình điều khiển scala .

Nếu bạn thực sự muốn sử dụng các đặc điểm (do định nghĩa của các phương thức trừu tượng), bạn có thể làm như sau:

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)
}

Bây giờ bạn có thể có ADT của mình cho A được xác định với 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

Câu trả lời này không giải quyết trực tiếp câu hỏi nhưng cung cấp một giải pháp khả thi. Lưu ý rằng mã này chỉ là một ví dụ. Để triển khai đầy đủ hơn, bạn có thể xem repo github này .



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Thuộc tính Model chứa tập hợp các đối tượng

  2. Rò rỉ bộ nhớ trong con trỏ MongoDB (OutOfMemory)?

  3. TTL hết hạn của tài liệu tham chiếu Mongoose

  4. Cập nhật MongoDBMany ()

  5. System.FormatException 'xảy ra trong MongoDB.Bson.dll - XXX không phải là chuỗi hex 24 chữ số hợp lệ