Connessione a MongoDB in Scala 3

Mattepuffo's logo
Connessione a MongoDB in Scala 3

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!


Condividi

1 Commenti

  • Federico

    Molto utile

    30/07/2025

Commentami!