MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Tutoriel MongoDB :Connexion à MongoDB dans Scala

MongoDB dispose d'un ensemble complet de pilotes pour de nombreux langages de programmation. Dans le tutoriel suivant, nous allons vous montrer les différentes nuances de la connexion à MongoDB à l'aide de son pilote Scala.

Installation du pilote

Le pilote Scala de MongoDB peut être ajouté à votre projet en utilisant la dépendance suivante -

org.mongodbmongo-scala-driver1.0.1 

Vous pouvez également télécharger le pilote MongoDB Scala à partir de sa page github.

Le pilote Scala pour MongoDB, comme Java, est fourni avec plusieurs classes pour faciliter les connexions à une instance MongoDB.

Scala Driver for MongoDB, comme Java, est livré avec plusieurs classes pour faciliter les connexions à une instance MongoDB. Cliquez pour tweeter

Procédons étape par étape :

Connexion

Une connexion à une instance MongoDB peut être configurée à l'aide d'un client Mongo. MongoClient est une classe qui peut être utilisée pour gérer les connexions à MongoDB. Le moyen le plus simple de créer une connexion serait d'utiliser -

val client :MongoClient=MongoClient(":27017")

Des options telles que l'authentification, le numéro de port, etc. peuvent être définies dans la chaîne de connexion. Par exemple, une option de jeu de répliques peut être définie comme /?replicaSet=rs0 . Pour une liste complète des options, consultez les options URI de la chaîne de connexion.

Alternativement, une classe MongoClientSettings() peut être utilisée pour contrôler le comportement d'un client Mongo. Une classe ClusterSettings peut être utilisée pour ajouter des paramètres de cluster à la classe Mongoclientsettings. Une connexion simple utilisant ces trois classes peut être la suivante -

val clusterSettings :ClusterSettings=ClusterSettings.builder().hosts(List(newServerAddress("mongodb2.example.com:27345"),newServerAddress("mongodb1.example.com:20026")).asJava).build( )val settings :<MongoClientSettings=MongoClientSettings.builder().clusterSettings(clusterSettings)).build()val mongoClient :MongoClient=MongoClient(settings)

La connexion utilise par défaut  AsynchronousSocketChannel à partir du JDK de votre système. Si vous utilisez SSL ou si vous disposez d'une version JDK antérieure à 1.7, vous devrez utiliser Netty comme décrit dans la section SSL.

SSL

Votre connexion à MongoDB peut être sécurisée à l'aide de SSL. Notre autre article de blog "Sécuriser les clusters avec SSL" décrit l'importance de SSL.

Pour valider le certificat présenté par le serveur MongoDB, vous devrez ajouter l'autorité de certification des autorités de signature au magasin de confiance du système.

Vous devrez également ajouter des propriétés pour le pilote afin d'utiliser une bibliothèque Netty au lieu d'AsynchronousSocketChannel à cette fin. Vous devrez télécharger les jars Netty et les ajouter à vos projets en cours car la dépendance Scala ne le télécharge pas. Vous aurez également besoin des déclarations d'importation suivantes -

importer org.mongodb.scala.connection.{NettyStreamFactoryFactory,SslSettings}

La connexion à MongoDB via SSL peut être effectuée comme suit -

val settings :MongoClientSettings=MongoClientSettings.builder().clusterSettings(clusterSettings).sslSettings(SslSettings.builder().enabled(true).build()).streamFactoryFactory(NettyStreamFactoryFactory()).build()

Si vous rencontrez des problèmes de connexion au serveur, le nom d'hôte sur le certificat SSL de votre serveur peut être différent de celui que vous avez spécifié lors de la création de MongoClient. Vous pouvez désactiver ce paramètre en utilisant. .invalidHostNameAllowed(true) dans vos SslSettings.

Authentification

Vous pouvez utiliser la classe MongoCredential pour ajouter des identifiants à vos MongoClientSettings. Une utilisation typique de la classe MongoCredentials sera la suivante -

Paramètres
val :MongoClientSettings =MongoClientSettings.builder().clusterSettings(clusterSettings).credentialList(credential).sslSettings(SslSettings.builder().enabled(true).build()).streamFactoryFactory(NettyStreamFactoryFactory()).build ()

Notez que lorsque vous avez ajouté plusieurs hôtes dans les paramètres du cluster, vous pouvez ajouter vos informations d'identification sous forme de liste. Par exemple, vous pouvez ajouter une List(credential1,credential2).asJava pour deux hôtes.

En rassemblant tout cela, voici le code complet pour se connecter à un jeu de réplicas avec SSL dans Scala -

import com.mongodb.MongoCredentialimport org.mongodb.scala.bson.collection.mutable.Documentimport org.mongodb.scala.{Completed, FindObservable, MongoClient, MongoClientSettings, MongoCollection, MongoDatabase, Observable,Observer, ReadPreference, ServerAddress}import org.mongodb.scala.connection.ClusterSettingsimport com.mongodb.MongoCredential._import java.util.logging.{Level, Logger}import org.mongodb.scala.connection.{NettyStreamFactoryFactory,SslSettings}import scala.collection.JavaConverters._objectnewworld { 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 user :String ="testuser"val databasename :String ="scalatest" mot de passe val :Array[Char] ="".toCharArrayval identifiant :MongoCredential =createCredent ial(user, databasename, password)val settings :MongoClientSettings =MongoClientSettings.builder().clusterSettings(clusterSettings).credentialList(List(credential,credential).asJava).sslSettings(SslSettings.builder().enabled(true).build ()).streamFactoryFactory(NettyStreamFactoryFactory()).build()val mongoClient :MongoClient =MongoClient(paramètres)val base de données :MongoDatabase =mongoClient.getDatabase("scalatest")mongoClient.close()}}

Tester votre connexion

Les pages de démarrage du pilote Scala contiennent des exemples sur la façon dont vous pouvez tester votre connexion.

Références :

Premiers pas avec scala à l'aide de MongoDB

API Mongo Scala

Faites-nous savoir si vous rencontrez des problèmes pour vous connecter à MongoDB à l'aide de son pilote Scala. Nous proposons des options gérées pour tous vos besoins MongoDB.