回答
你應該採取在卡斯巴仔細看,這是官方(並完全支持)的MongoDB斯卡拉司機:
http://api.mongodb.org/scala/casbah/latest
林誠然偏置作爲該項目的創建者和維護者,但官方支持帶來很多好處,包括背後有全職開發人員的事實。對於通用Scala類型和Scala集合類型的DBObject實現,內置了固體類型轉換包裝器,這些實現比許多其他驅動程序使用的默認Java對象要好得多。還有一個完整的查詢dsl映射到Mongo查詢語法。
我喜歡Lift的東西,最近也開始與Lift團隊合作幫助改善它。四方剛剛發佈了名爲盜賊用於提升蒙戈記錄查詢DSL驅動自己的Scala + MongoDB的系統:
http://GitHub.com/foursquare/rogue
我發現大多數人使用的是電梯或卡斯巴,但情況因人而異。如果您需要更多幫助,請隨時與我聯繫。
盜賊似乎被遺棄 - 最近6個月前提交。 – 2014-07-25 12:31:54
作爲Casbah的一個無偏見的用戶,現在我說,肯定會使用Casbah。
檢查:
val mongo = MongoConnection()
val coll = mongo("myDB")("myCollection")
val builder = MongoDBObject.newBuilder
builder += "username" -> "Janx"
builder += "comment" -> "Casbah is cool!"
coll += builder.result.asDBObject
這當然只是一種味道。特別是如果你來自Java驅動程序,使用起來非常清爽。既然現在是10Gen和天才麥克亞當斯先生支持的Scala驅動程序,那麼這真是一件容易的事情。乾杯!
我們與卡斯巴適用於深物體或簡單的地圖,並沒有真正的案例類映射支持,所以我們在該舊式Java驅動程序之上,我想用無恥地插在此處推出我們自己的MongoDB Synchronous Scala driver的方式有點不滿意有關如何存儲和檢索地圖和簡單案例類的示例。該驅動程序沒有太多的魔力,並且易於安裝,並且具有受Play2 JSON impl啓發的簡單BSON實現。
下面是如何用一些簡單的數值使用它:
val client = MongoClient("hostname", 27017)
val db = client("dbname")
val coll = db("collectionname")
coll.save(Bson.doc("_id" -> 1, "vals" -> Map("key1" -> "val1")))
val docOpt = coll.findOneById(1) // => Option[BsonDoc]
for(doc <- docOpt)
println(doc.as[Map[String, String]]("vals")("key1")) // => prints "val1"
並配有案例類:
case class DnsRecord(host: String = "", ttl: Long = 0, otherProps: Map[String, String] = Map())
case object DnsRecord {
implicit object DnsRecordToBsonElement extends ToBsonElement[DnsRecord] {
def toBson(v: DnsRecord): BsonElement = DnsRecordToBsonDoc.toBson(v)
}
implicit object DnsRecordFromBsonElement extends FromBsonElement[DnsRecord] {
def fromBson(v: BsonElement): DnsRecord = DnsRecordFromBsonDoc.fromBson(v.asInstanceOf[BsonDoc])
}
implicit object DnsRecordFromBsonDoc extends FromBsonDoc[DnsRecord] {
def fromBson(d: BsonDoc): DnsRecord = DnsRecord(
d[String]("host"),
d[Long]("ttl"),
d[Map[String, String]]("op")
)
}
implicit object DnsRecordToBsonDoc extends ToBsonDoc[DnsRecord] {
def toBson(m: DnsRecord): BsonDoc = Bson.doc(
"host" -> m.host,
"ttl" -> m.ttl,
"op" -> m.otherProps
)
}
}
coll.save(DnsRecord("test.de", 4456, Map("p2" -> "val1")))
for (r <- coll.findAs[DnsRecord](Bson.doc("host" -> "test.de")))
println(r.host)
- 1. MongoDB哪種模式最適合存儲?
- 2. 哪個DVCS最適合Subversion版本庫
- 3. 哪個scala集合最適合構建資源池
- 4. 哪個隊列最合適?
- 5. 哪個CMS最適合Node.js?
- 6. 哪個廣告最適合用於移動設備的SDK?
- 7. 哪個WordPress論壇插件最適合用於企業網站?
- 8. 哪個JavaScript框架最適合用於Rails?
- 9. 適用於Scala和Java的Builder庫
- 10. 適用於Java的Feed Reader庫最適合什麼?
- 11. 哪個Python異步庫最適合我的代碼? Asyncore?扭曲?
- 12. 哪個數據庫最適合我的情況?
- 13. 哪個工具/庫最適合在沒有中央存儲庫的情況下同步數據
- 14. 哪個最常用? RSS或Atom?哪一個更適合從?
- 15. 哪個工具最適合設計GUI。 Java或.net C#WPF
- 16. ASP.NET MVC:哪個JavaScript工具箱最適合?
- 17. 哪個解決方案最適合於SELECT請求的時間?
- 18. 使用僅適用於舊版Scala版本的Scala庫
- 19. 哪個IDE最適合擴展開發?
- 20. 哪個eclipse最適合Android開發?
- 21. 哪個版本控制最適合我?
- 22. 哪個PHP ORM最適合Zend Framework?
- 23. 哪個NoSQL實現最合適?
- 24. 哪個Linux版本最適合Nutch-Hadoop?
- 25. 哪個Web框架最適合私有云Web應用程序?
- 26. 哪個版本控制工具最適合存儲最後的'N'提交?
- 27. 哪個數據庫存儲引擎最適合實現博客?
- 28. 最適合Java的iCalendar庫?
- 29. 最適合Java的HTTP庫?
- 30. 哪種測量最適合使用?
約ReactiveMongo什麼? (http://reactivemongo.org/) – 2013-09-16 02:27:06