Play Framework 2.1 的最佳 MongoDB 驱动程序是什么?
我现在正在尝试 ReactiveMongo,但我在任何地方都找不到好的文档,我对它的未来发展表示怀疑。
哪个驱动程序最受欢迎和受支持?
谢谢,
遗传算法
Play Framework 2.1 的最佳 MongoDB 驱动程序是什么?
我现在正在尝试 ReactiveMongo,但我在任何地方都找不到好的文档,我对它的未来发展表示怀疑。
哪个驱动程序最受欢迎和受支持?
谢谢,
遗传算法
我们对 Casbah 处理深层对象或简单映射的方式有些不满意,并且没有真正的案例类映射支持,因此我们在遗留 Java 驱动程序之上推出了自己的MongoDB 同步 Scala 驱动程序,我想在这里无耻地插入一个示例关于如何存储和检索地图和一个简单的案例类。该驱动程序没有太多魔力,易于设置,并具有受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)