Какой драйвер я могу использовать для доступа к mongodb в приложении Scala Swing? - PullRequest
1 голос
/ 03 ноября 2010

HI .. Я работаю со Scala N Mongodb. Теперь я хочу получить доступ к базе данных mongodb в приложении Scala Swing. так, какие драйверы я могу использовать для этого? и который может легко работать? пожалуйста, ответьте

Ответы [ 3 ]

1 голос
/ 09 февраля 2011

Я использовал casbah http://api.mongodb.org/scala/casbah/2.0.2/index.html, чтобы поговорить с mongodb из моего приложения на Scala Swing.

Он довольно прост в установке и настройке, а API довольно scala-esque.

Самая сложная часть - это понимание самого mongodb (исходя из фона sql)

0 голосов
/ 30 июня 2015

В качестве обновления для людей, которые находят эту тему и интересуются MongoDB 3.X.Мы используем асинхронный драйвер, который можно найти здесь https://github.com/evojam/mongodb-driver-scala. Это API построен по принципу Scala с новым модулем Play 2.4, если вы его используете, но вы всегда можете взять только драйвер.

0 голосов
/ 03 октября 2013

Мы были недовольны тем, как Casbah работает с глубокими объектами или простыми картами, и отсутствием реальной поддержки отображения классов, поэтому мы развернули наш собственный MongoDB Synchronous Scala драйвер поверх устаревшего Java-драйвера, который яхотел бы бесстыдно подключиться сюда с примером о том, как хранить и извлечь карту, и простым классом дел.Драйвер не обладает большой магией, прост в настройке и имеет простую реализацию 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...