HI .. Je travaille avec la scala n mongodb. maintenant je veux accéder à la base de données mongodb dans l'application scala swing. alors quels pilotes puis-je utiliser pour cela? et qui peut facilement travailler? veuillez répondrequel pilote puis-je utiliser pour accéder à mongodb dans une application scala swing?
Répondre
J'ai utilisé casbah http://api.mongodb.org/scala/casbah/2.0.2/index.html pour parler à mongodb de mon application scala swing.
Il est assez facile à installer et à configurer, et l'API est assez scala-esque.
La partie la plus difficile est de comprendre mongodb lui-même, (provenant d'un arrière-plan sql)
Nous étions en quelque sorte pas satisfait de la façon dont casbah fonctionne pour les objets profonds ou des cartes simples et aucun cas réel support de mapping de classe pour que nous roulions notre propre MongoDB Synchronous Scala driver sur le pilote java hérité que je voudrais sans vergogne brancher ici avec un exemple sur la façon de stocker et de récupérer une carte et une classe de cas simple. Le pilote n'a pas beaucoup de magie et est facile à installer et dispose d'une implémentation simple BSON qui a été inspiré par le Play2 JSON impl.
Voici comment l'utiliser avec des valeurs simples:
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"
Pour une classe de cas, il est un peu plus complexe, mais il est tout Roulotté main et il n'y a pas de magie pour que vous puissiez faire tout ce que vous comme et comment vous en avez besoin, ce fournisseur certains noms clés plus courts dans le doc:
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)
comme une mise à jour pour les personnes à trouver ce fil et intéressé par MongoDB 3.X. Nous utilisons le pilote Async qui peut être trouvé ici https://github.com/evojam/mongodb-driver-scala. Son API est construite de manière Scala avec le nouveau module Play 2.4 prêt si vous l'utilisez, mais vous pouvez toujours prendre seulement le pilote.
- 1. comment accéder à la base de données mongodb dans scala?
- 2. Comment utiliser MongoRegex (pilote MongoDB C#)
- 3. Arbre dans le swing scala
- 4. mongodb pilote java - commande brute?
- 5. équivalent Java de requête scala dans MongoDB
- 6. problème avec MongoDB Ruby pilote
- 7. Quel type utiliser pour stocker un seul caractère dans Scala?
- 8. MongoDB Équivalent à la requête SQL avec le pilote Java?
- 9. Comment combiner opérateur conditionnel dans le pilote NORM pour MongoDB
- 10. Comment utiliser des thèmes tiers dans une application swing?
- 11. Scala Swing Attendre
- 12. utiliser une variable pour accéder à $ _POST
- 13. Groupe MongoDB utilisant le pilote Ruby
- 14. Comment utiliser réellement Swing Application Framework?
- 15. Quel pilote OJDBC pour Java 6?
- 16. Comment rendre tangible une application Swing?
- 17. Utiliser MediaTracker pour mettre en cache des images Swing application
- 18. Comment exécuter l'application scala swing?
- 19. Scala Swing réactions dans un panneau étendu
- 20. Implémentation de "$ or" avec le pilote C# (Samus) pour MongoDB
- 21. Quel framework HTTP utiliser pour une application simple mais évolutive?
- 22. Accéder aux données Web pour une utilisation dans une application?
- 23. Utilisation de MongoDB pour une application Web de calendrier
- 24. Comment utiliser OLE-DB pour accéder à un fichier dbf dans une application ATL COM/C++?
- 25. Utilisation du pilote MongoDB Ruby dans Rails? (sans mappeur d'objet)
- 26. j2me SDK3 pour application AWT/Swing
- 27. Application de cas à act() dans scala
- 28. Firebird, quel pilote?
- 29. Cadre d'application Swing pour application multilingue
- 30. Spring et une application Swing ensemble?
Oui, Casbah fonctionne très bien. En plus de cela, vous pouvez utiliser Salat qui rend la lecture/écriture des objets imbriqués à la base de données assez indolore Voir https://github.com/novus/salat et http://repo.novus.com/salat-presentation/#0 Casbah et salat ont google groupes http://groups.google.com/group/mongodb-casbah-users/topics et http://groups.google.com/group/scala-salat. Aussi une bonne discussion ici http://skillsmatter.com/podcast/scala/mongodb-jvm – foolshat