我可以使用哪个驱动程序访问scala swing应用程序中的mongodb?

我可以使用哪个驱动程序访问scala swing应用程序中的mongodb?,scala,Scala,嗨。。 我和scala n mongodb合作。 现在我想在scala swing应用程序中访问mongodb数据库。 那么我可以使用哪些驱动程序呢? 哪一个可以很容易地工作? 请回复我一直在使用casbah从scala swing应用程序与mongodb对话 它的安装和设置非常容易,而且API非常类似于scala 最难的部分是理解mongodb本身(来自sql背景)我一直在使用casbah从scala swing应用程序与mongodb对话 它的安装和设置非常容易,而且API非常类似于scal

嗨。。 我和scala n mongodb合作。 现在我想在scala swing应用程序中访问mongodb数据库。 那么我可以使用哪些驱动程序呢? 哪一个可以很容易地工作? 请回复

我一直在使用casbah从scala swing应用程序与mongodb对话

它的安装和设置非常容易,而且API非常类似于scala

最难的部分是理解mongodb本身(来自sql背景)

我一直在使用casbah从scala swing应用程序与mongodb对话

它的安装和设置非常容易,而且API非常类似于scala


最难的部分是理解mongodb本身(来自sql背景)

我们对Casbah处理深度对象或简单映射的方式有点不满意,并且没有真正的案例类映射支持,因此我们在遗留java驱动程序的基础上推出了自己的驱动程序,我想在这里无耻地插入一个关于如何存储和检索映射和简单案例类的示例。该驱动程序没有太多的魔力,易于设置,并具有一个简单的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)

我们对Casbah处理深度对象或简单映射的方式有点不满意,并且没有真正的案例类映射支持,因此我们在遗留java驱动程序的基础上推出了自己的驱动程序,我想在这里无耻地插入一个关于如何存储和检索映射和简单案例类的示例。该驱动程序没有太多的魔力,易于设置,并具有一个简单的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 3.X感兴趣的人的更新。我们使用的是异步驱动程序,可以在这里找到。它的API是以Scala方式构建的,如果您正在使用它,新的Play 2.4模块已经准备就绪,但您可以始终只使用驱动程序。

作为对MongoDB 3.X感兴趣的人发现此线程的更新。我们使用的是异步驱动程序,可以在这里找到。它的API是以Scala的方式构建的,如果您正在使用新的Play 2.4模块,它已经准备就绪,但您始终可以只使用驱动程序。

是的,Casbah工作得非常好。除此之外,您还可以使用Salat,它可以轻松地将嵌套对象读/写到数据库中,Casbah和Salat都有googlegroups和。这也是一次很好的谈话是的,Casbah非常好用。除此之外,您还可以使用Salat,它可以轻松地将嵌套对象读/写到数据库中,Casbah和Salat都有googlegroups和。这里也是一次很好的谈话