Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
适用于Play Framework 2.1的最佳mongodb驱动程序_Mongodb_Scala_Playframework 2.1_Mongodb Scala - Fatal编程技术网

适用于Play Framework 2.1的最佳mongodb驱动程序

适用于Play Framework 2.1的最佳mongodb驱动程序,mongodb,scala,playframework-2.1,mongodb-scala,Mongodb,Scala,Playframework 2.1,Mongodb Scala,Play Framework 2.1的最佳MongoDB驱动程序是什么 目前我正在尝试ReactiveMongo,但我在任何地方都找不到好的文档,我对它的未来发展表示怀疑 哪个驱动程序最受欢迎和支持 谢谢 GA我没有做任何比较,所以我不会说它是最好的,但当我开始我当前的项目时,只有它的。它有很好的文档记录(参见其github wiki),并且正在积极开发中。我得说它有生产质量。如果文档不足以满足您的需要,那么存储库中的测试套件中会有一些使用示例。您可以尝试将此库与我的colegues一起使用,作

Play Framework 2.1的最佳MongoDB驱动程序是什么

目前我正在尝试ReactiveMongo,但我在任何地方都找不到好的文档,我对它的未来发展表示怀疑

哪个驱动程序最受欢迎和支持

谢谢


GA

我没有做任何比较,所以我不会说它是最好的,但当我开始我当前的项目时,只有它的。它有很好的文档记录(参见其github wiki),并且正在积极开发中。我得说它有生产质量。如果文档不足以满足您的需要,那么存储库中的测试套件中会有一些使用示例。

您可以尝试将此库与我的colegues一起使用,作为另一个专有项目的一部分。库现在已用于生产。虽然缺少文档,但它非常有用且非常简单。你可以看看,,没有文档,这里有一个简单用法的简短示例。

我们对Casbah处理深度对象或简单映射的方式有点不满意,并且没有真正的case类映射支持,因此我们在遗留java驱动程序的基础上推出了自己的驱动程序,我想在这里无耻地插入一个关于如何存储和检索map和一个简单的case类。该驱动程序没有太多的魔力,易于设置,并具有一个简单的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"
val client=MongoClient(“主机名”,27017)
val db=客户机(“数据库名”)
val coll=db(“collectionname”)
coll.save(Bson.doc(“\u id”->1,“vals”->Map(“key1”->“val1”))
val docOpt=coll.findOneById(1)/=>Option[BsonDoc]
对于(文件打印“val1”
对于case类,需要一些映射,但这是我们的设计决策,因为我们希望映射完全可定制,而不需要了解任何实际框架:

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)
case类DnsRecord(host:String=”“,ttl:Long=0,otherProps:Map[String,String]=Map())
案例对象DNS记录{
隐式对象DnsRecordToBsonElement扩展了ToBsonElement[DnsRecord]{
def toBson(v:DnsRecord):bsonement=DnsRecordToBsonDoc.toBson(v)
}
隐式对象DnsRecordFromBsonElement扩展自BsonElement[DnsRecord]{
def fromBson(v:bsonement):DnsRecord=DnsRecordFromBsonDoc.fromBson(v.asInstanceOf[BsonDoc])
}
隐式对象DnsRecordFromBsonDoc从BsonDoc[DnsRecord]扩展而来{
来自BSON的def(d:BsonDoc):DnsRecord=DnsRecord(
d[字符串](“主机”),
d[长](“ttl”),
d[Map[String,String]](“op”)
)
}
隐式对象DnsRecordToBsonDoc扩展了ToBsonDoc[DnsRecord]{
def toBson(m:DnsRecord):BsonDoc=Bson.doc(
“主机”->m.host,
“ttl”->m.ttl,
“op”->m.otherProps
)
}
}
coll.save(DnsRecord(“test.de”,4456,Map(“p2”->“val1”))
(r“test.de”))
println(r.host)

我找不到好的文档
不幸的是,这是真的
我对它的未来发展表示怀疑
它是最有前途的MongoDB驱动程序,对它的未来毫无疑问。Scala的人群对“反应宣言”的东西很感兴趣,如果反应Mongo没有未来,我个人会感到非常惊讶。当我做同样的练习时,ReactiveMongo谷歌小组比Salat小组更活跃。然而,我同意你的观察,Salat比ReactiveMongo有更好的文档记录,所以开始使用它会更容易。只是我的意见…伙计。有人知道有没有在java中运行良好的mongo ORM吗?