Connessione a MongoDB in Scala 3
In questo articolo vediamo come connetterci a MongoDB usando Scala 3.
Solo che, da quello che ho capito, al momento i driver sono solo per la versione 2 di Scala.
Quindi, se usiamo sbt, dobbiamo forzare la compatibilità:
libraryDependencies ++= Seq(
"org.mongodb.scala" % "mongo-scala-driver_2.13" % "5.5.1"
)
Qui sotto un esempio di codice in cui creiamo una collection ed inseriamo un pò di records, che alla fine leggiamo:
package com.test
import org.mongodb.scala._
import org.mongodb.scala.model.Updates._
import scala.concurrent.Await
import scala.concurrent.duration._
import org.mongodb.scala.bson.collection.immutable.Document
case class Persona(
nome: Option[String] = None,
cognome: Option[String] = None,
email: Option[String] = None,
telefono: Option[String] = None,
indirizzo: Option[String] = None
)
@main
def main(): Unit = {
val mongoClient: MongoClient = MongoClient("mongodb://localhost:27017")
val database: MongoDatabase = mongoClient.getDatabase("testdb")
// CREO LA COLLECTION
val collectionName = "persone"
val collectionNames = Await.result(database.listCollectionNames().toFuture(), 5.seconds)
if (!collectionNames.contains(collectionName)) {
Await.result(database.createCollection(collectionName).toFuture(), 5.seconds)
println(s"Collection '$collectionName' creata.")
}
val personeCollection: MongoCollection[Document] = database.getCollection(collectionName)
// CREO ALCUNI RECORDS
val persona1 = Document("nome" -> "Mario", "cognome" -> "Rossi")
Await.result(personeCollection.insertOne(persona1).toFuture(), 5.seconds)
val persona2 = Document("nome" -> "Luigi", "cognome" -> "Verdi", "email" -> "luigi.verdi@email.com")
Await.result(personeCollection.insertOne(persona2).toFuture(), 5.seconds)
val persona3 = Document("email" -> "marta.bianchi@email.com", "telefono" -> "3331234567")
Await.result(personeCollection.insertOne(persona3).toFuture(), 5.seconds)
val persona4 = Document("nome" -> "Anna", "cognome" -> "Neri", "indirizzo" -> "Via Roma 10")
Await.result(personeCollection.insertOne(persona4).toFuture(), 5.seconds)
// VISUALIZZO TUTTI I RECORDS INSERITI
val persone = Await.result(personeCollection.find().toFuture(), 5.seconds)
println("Tutte le persone nella collection:")
persone.foreach(doc => println(doc.toJson()))
mongoClient.close()
}
Come al solito ho messo il codice tutto insieme per semplcità.
Enjoy!
scala sbt mongodb database
1 Commenti
Molto utile
30/07/2025