Fer*_*han 2 scala mongodb casbah
我正在通过编写一个简单的应用程序来学习MongoDB和Casbah.当我尝试将具有列表成员的对象转换为MongoDB对象时,卡住了.这是我的课
case class BorrowerRecord( name: String, checkedOut: List[BookTag]) {
require(!name.isEmpty)
require(!checkedOut.isEmpty)
}
case class BookTag (subject: Subject, bookName: String) {
require(!bookName.isEmpty)
}
case class Subject (name: String, category: Category) {
require(!name.isEmpty)
}
Run Code Online (Sandbox Code Playgroud)
类别是一个具有2个案例类实现的密封特征,我打算像"Enum"一样使用它
sealed trait Category {
def name: String
}
object Category {
case object Computing extends Category { val name = "Computing"}
case object Math extends Category { val name = "Math"}
}
Run Code Online (Sandbox Code Playgroud)
因此,BorrowerRecord的一个实例将保留一个人从图书馆检出的书籍,每本书都由BookTag对象识别.BookTag保存有关书籍,主题名称,类别等书籍的一些信息.
让我说我有一个BorrowerRecord并希望将它保存到MongoDB
val borrowOnToday = BorrowerRecord( "My Name", List( BookTag(Subject("J2EE", Category.Computing), "Head First Java"),
BookTag(Subject("Linear Algebra", Category.Math), "Algebra for Dummies")))
Run Code Online (Sandbox Code Playgroud)
我应该如何使用Casbah将其转换为MongoDBObject?
或者卡斯巴不是可行的方式,还有其他库可以帮助我更容易地将其持久化到MongoDB中吗?
要使用案例类,请使用salat(按< - 和 - >在演示文稿中移动).
这很简单:
case class Alpha(x: String)
scala> val a = Alpha(x = "Hello world")
a: com.novus.salat.test.model.Alpha = Alpha(Hello world)
scala> val dbo = grater[Alpha].asDBObject(a)
dbo: com.mongodb.casbah.Imports.DBObject = { "_typeHint" :
"com.novus.salat.test.model.Alpha" , "x" : "Hello world"}
scala> val a_* = grater[Alpha].asObject(dbo)
a_*: com.novus.salat.test.model.Alpha = Alpha(Hello world)
Run Code Online (Sandbox Code Playgroud)
通常,我使用它们:casbah来查询/来自Mongo,以及salat来转换到case类,反之亦然.
是的,salat支持带有列表的案例类(这里是支持的集合列表).
| 归档时间: |
|
| 查看次数: |
3989 次 |
| 最近记录: |