MongoDB har et omfattende driversæt til mange programmeringssprog. I den følgende vejledning vil vi vise dig de forskellige nuancer ved at oprette forbindelse til MongoDB ved hjælp af dens Scala-driver.
Driverinstallation
MongoDBs Scala-driver kan tilføjes til dit projekt ved hjælp af følgende afhængighed -
org.mongodb mongo-scala-driver 1.0.1
Du kan også downloade MongoDB Scala-driver fra dens github-side.
Scala Driver til MongoDB kommer ligesom Java med flere klasser for at lette forbindelser til en MongoDB-instans.
Scala Driver til MongoDB kommer ligesom Java med flere klasser for at lette forbindelser til en MongoDB-instans. Klik for at tweeteLad os tage dette trin for trin:
Forbindelse
En forbindelse til en MongoDB-instans kan sættes op ved hjælp af en Mongo-klient. MongoClient er en klasse, der kan bruges til at administrere forbindelser til MongoDB. Den nemmeste måde at oprette en forbindelse på er ved at bruge -
val client:MongoClient=MongoClient(":27017")
Indstillinger som autentificering, portnummer osv. kan indstilles i forbindelsesstrengen. For eksempel kan en replikasæt-indstilling indstilles som /?replicaSet=rs0
. Besøg forbindelsesstrengens URI-indstillinger for en komplet liste over muligheder.
Alternativt kan en MongoClientSettings()-klasse bruges til at kontrollere adfærden for en Mongo-klient. En ClusterSettings-klasse bruges til at tilføje klyngeindstillinger til Mongoclientsettings-klassen. En simpel forbindelse ved hjælp af disse tre klasser kan være som følger -
val clusterSettings:ClusterSettings=ClusterSettings.builder().hosts(List(newServerAddress("mongodb2.example.com:27345"),newServerAddress("mongodb1.example.com:20026")).asJava).build( )valindstillinger:<MongoClientSettings=MongoClientSettings.builder().clusterSettings(clusterSettings)).build()val mongoClient:MongoClient=MongoClient(indstillinger)
Forbindelsen bruger som standard AsynchronousSocketChannel fra dit systems JDK , hvis du bruger SSL eller har en JDK-version tidligere end 1.7, skal du bruge Netty som beskrevet i SSL-sektionen.
SSL
Din forbindelse til MongoDB kan sikres ved hjælp af SSL. Vores andet blogindlæg 'Sikring af klynger med SSL' beskriver vigtigheden af SSL.
For at validere det certifikat, der præsenteres af MongoDB-serveren, skal du tilføje signeringsmyndighedernes CA til systemets tillidslager.
Du skal også tilføje egenskaber til driveren for at bruge et Netty-bibliotek i stedet for AsynchronousSocketChannel til dette formål. Du bliver nødt til at downloade Netty-krukkerne og tilføje dem til dine nuværende projekter, da Scala-afhængigheden ikke downloader det. Du skal også bruge følgende importerklæringer -
import org.mongodb.scala.connection.{NettyStreamFactoryFactory,SslSettings}
Forbindelsen til MongoDB ved hjælp af SSL kan foretages som følger -
val settings:MongoClientSettings=MongoClientSettings.builder().clusterSettings(clusterSettings).sslSettings(SslSettings.builder().enabled(true).build()).streamFactoryFactory(NettyStreamFactoryFactory()).build()).>Hvis du har problemer med at oprette forbindelse til serveren, kan værtsnavnet på din servers SSL-certifikat være anderledes end det, du angiver, mens du bygger MongoClient. Du kan deaktivere denne indstilling ved at bruge.
.invalidHostNameAllowed(true)
i dine Ssl-indstillinger.Godkendelse
Du kan bruge MongoCredential-klassen til at tilføje legitimationsoplysninger til dine MongoClientSettings. En typisk brug af MongoCredentials-klassen vil være som følger -
Bemærk, at når du har tilføjet mere end én vært i klyngeindstillingerne, kan du tilføje dine legitimationsoplysninger som en liste. Du kan f.eks. tilføje
List(credential1,credential2).asJava
for to værter.Ved at sætte det hele sammen her er den komplette kode til at oprette forbindelse til et replikasæt med SSL i Scala -
import com.mongodb.MongoCredentialimport org.mongodb.scala.bson.collection.mutable.Documentimport org.mongodb.scala.{Completed, FindObservable, MongoClient, MongoClientSettings, MongoCollection, MongoDatabase,Observer,Observer,Observer,Observer,Observer,Observer,Observer,Observer,Observer,Observable,Observable} org.mongodb.scala.connection.ClusterSettingsimport com.mongodb.MongoCredential._import java.util.logging.{Level, Logger}import org.mongodb.scala.connection.{NettyStreamFactoryFactory,SslSettings.collection}import scalaworld {.newworld def main(args:Array[String]):Unit ={val mongoLogger:Logger =Logger.getLogger("com.mongodb")mongoLogger.setLevel(Level.SEVERE);val clusterSettings:ClusterSettings =ClusterSettings.builder().hosts (List(new ServerAddress("example.com:27345"), new ServerAddress("example.com:20026")).asJava).build()val bruger:String ="testuser"val databasenavn:String ="scalatest" val password:Array[Char] ="".toCharArrayval legitimationsoplysninger:MongoCredential =createCredent ial(bruger, databasenavn, adgangskode) indstillinger:MongoClientSettings =MongoClientSettings.builder().clusterSettings(clusterSettings).credentialList(List(credential,credential).asJava).sslSettings(SslSettings.builder().enabled(true). ()).streamFactoryFactory(NettyStreamFactoryFactory()).build()val mongoClient:MongoClient =MongoClient(settings)val database:MongoDatabase =mongoClient.getDatabase("scalatest")mongoClient.close()}} Test af din forbindelse
Scala driver Kom godt i gang-sider har eksempler på, hvordan du kan teste din forbindelse.
Referencer:
Kom godt i gang med scala ved hjælp af MongoDB
Mongo Scala API
Fortæl os, hvis du har problemer med at oprette forbindelse til MongoDB ved hjælp af dens Scala-driver. Vi tilbyder administrerede muligheder for alle dine MongoDB-behov.