MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

विशेषता और विरासत में मिली कक्षाओं के लिए Mongodb scala ड्राइवर कोडेक

मुझे कुछ दिन पहले भी यही चिंता थी, लेकिन sealed traits के बारे में दस्तावेज़ीकरण में कुछ भी नहीं मिला MongoDB में ADT मॉडलिंग के लिए।

अंत में, मैंने sealed class का इस्तेमाल किया जैसा कि आधिकारिक में सुझाया गया है स्कैला ड्राइवर जीथब रेपो .

यदि आप वास्तव में लक्षणों का उपयोग करना चाहते हैं (अमूर्त विधियों की परिभाषा के कारण) तो आप कुछ ऐसा कर सकते हैं:

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

अब आप ए के लिए अपना एडीटी 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

यह उत्तर सीधे प्रश्न को हल नहीं करता है लेकिन एक व्यवहार्य समाधान प्रदान करता है। ध्यान दें कि यह कोड सिर्फ एक उदाहरण है। अधिक पूर्ण कार्यान्वयन के लिए, आप यह github रेपो देख सकते हैं .



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB:$ या एक पूर्ण-पाठ खोज और एक $in

  2. आर के माध्यम से कनेक्ट होने पर मोंगो डीबी में संग्रह देखने में असमर्थ

  3. स्प्रिंग डेटा मोंगोडब - एग्रीगेशन फ्रेमवर्क इंटीग्रेशन

  4. मैं एक MongoDB उपयोगकर्ता का पासवर्ड कैसे बदलूं?

  5. mongdb erlang ड्राइवर का उपयोग करके क्वेरी गलत परिणाम लौटाती है?