簡體   English   中英

Play Framework 2.1的最佳mongodb驅動程序

[英]Best mongodb driver for Play Framework 2.1

什么是Play Framework 2.1最好的MongoDB驅動程序?

我現在正在嘗試ReactiveMongo,但我無法在任何地方找到好的文檔,我懷疑它的未來發展。

哪個驅動程序最受歡迎和支持?

謝謝,

GA

我沒有做任何比較,所以我不會要求它是最好的,但是當我開始與我目前的項目中只有薩拉特與它玩! 插件 它有很好的文檔記錄(參見其github wiki)並且正在積極開發中。 我說它有生產質量。 如果文檔不夠,則存儲庫中的測試套件中會有使用示例。

我們對Casbah用於深層對象或簡單映射的方式以及沒有真正的案例類映射支持感到不滿意所以我們在遺留的java驅動程序之上推出了我們自己的MongoDB Synchronous Scala驅動程序,我想通過示例無恥地插入這里關於如何存儲和檢索地圖以及簡單的案例類。 該驅動程序沒有太大的魔力,易於設置,並具有簡單的BSON實現,其靈感來自Play2 JSON impl

以下是如何使用一些簡單的值:

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)

你可以嘗試使用Moscale我用我的colegues實現這個庫作為另一個專有項目的一部分。 庫現在用於生產。 缺乏文檔,但它非常有用且非常簡單。 您可以查看測試而不是文檔,並且有一個簡單用法的簡短示例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM