MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

MongoDB-Tutorial:Herstellen einer Verbindung mit MongoDB in Scala

MongoDB verfügt über ein umfangreiches Treiberset für viele Programmiersprachen. Im folgenden Tutorial zeigen wir Ihnen die verschiedenen Nuancen der Verbindung mit MongoDB über den Scala-Treiber.

Treiberinstallation

Der Scala-Treiber von MongoDB kann Ihrem Projekt mithilfe der folgenden Abhängigkeit hinzugefügt werden -

<dependencies>
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-scala-driver</artifactId>
<version>1.0.1</version>
</dependency>
</dependencies>

Sie können den MongoDB Scala-Treiber auch von seiner Github-Seite herunterladen.

Der Scala-Treiber für MongoDB enthält wie Java mehrere Klassen, um Verbindungen zu einer MongoDB-Instanz zu erleichtern.

Der Scala-Treiber für MongoDB verfügt wie Java über mehrere Klassen, um Verbindungen zu einer MongoDB-Instanz zu erleichtern. Click To Tweet

Gehen wir Schritt für Schritt vor:

Verbindung

Über einen Mongo-Client kann eine Verbindung zu einer MongoDB-Instanz aufgebaut werden. MongoClient ist eine Klasse, die verwendet werden kann, um Verbindungen zu MongoDB zu verwalten. Der einfachste Weg, eine Verbindung herzustellen, wäre die Verwendung von -

val client:MongoClient=MongoClient("<server1>:27017")

Im Verbindungsstring können Optionen wie Authentifizierung, Portnummer etc. gesetzt werden. Beispielsweise kann eine Replikatsatzoption als /?replicaSet=rs0 festgelegt werden . Eine vollständige Liste der Optionen finden Sie unter URI-Optionen für Verbindungszeichenfolgen.

Alternativ kann eine MongoClientSettings()-Klasse verwendet werden, um das Verhalten eines Mongo-Clients zu steuern. Eine ClusterSettings-Klasse kann verwendet werden, um der Mongoclientsettings-Klasse Clustereinstellungen hinzuzufügen. Eine einfache Verbindung, die diese drei Klassen verwendet, kann wie folgt aussehen -

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

Die Verbindung verwendet standardmäßig  AsynchronousSocketChannel von Ihrem System-JDK, wenn Sie SSL verwenden oder eine JDK-Version vor 1.7 haben, müssen Sie Netty verwenden, wie im SSL-Abschnitt beschrieben.

SSL

Ihre Verbindung zu MongoDB kann mit SSL gesichert werden. Unser anderer Blogpost „Cluster mit SSL sichern“ beschreibt die Bedeutung von SSL.

Um das vom MongoDB-Server präsentierte Zertifikat zu validieren, müssen Sie die Zertifizierungsstelle CA zum Vertrauensspeicher des Systems hinzufügen.

Sie müssen auch Eigenschaften für den Treiber hinzufügen, um für diesen Zweck eine Netty-Bibliothek anstelle von AsynchronousSocketChannel zu verwenden. Sie müssen die Netty-Jars herunterladen und zu Ihren aktuellen Projekten hinzufügen, da die Scala-Abhängigkeit sie nicht herunterlädt. Sie benötigen außerdem die folgenden Importanweisungen -

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

Die Verbindung zu MongoDB über SSL kann wie folgt hergestellt werden -

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

Wenn Sie Probleme beim Herstellen einer Verbindung zum Server haben, unterscheidet sich der Hostname auf dem SSL-Zertifikat Ihres Servers möglicherweise von dem, den Sie beim Erstellen des MongoClient angegeben haben. Sie können diese Einstellung deaktivieren, indem Sie verwenden. .invalidHostNameAllowed(true) in Ihren SSL-Einstellungen.

Authentifizierung

Sie können die MongoCredential-Klasse verwenden, um Ihren MongoClientSettings Anmeldedaten hinzuzufügen. Eine typische Verwendung der MongoCredentials-Klasse ist wie folgt: 

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

Beachten Sie, dass Sie Ihre Anmeldeinformationen als Liste hinzufügen können, wenn Sie mehr als einen Host in den Clustereinstellungen hinzugefügt haben. Beispielsweise können Sie List(credential1,credential2).asJava für zwei Hosts.

Zusammenfassend ist hier der vollständige Code zum Herstellen einer Verbindung zu einem Replikatsatz mit SSL in Scala -

import com.mongodb.MongoCredential
import org.mongodb.scala.bson.collection.mutable.Document
import org.mongodb.scala.{Completed, FindObservable, MongoClient, MongoClientSettings, MongoCollection, MongoDatabase, Observable,Observer, ReadPreference, ServerAddress}
import org.mongodb.scala.connection.ClusterSettings
import 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"
val password: Array[Char] = "<enter-a-password>".toCharArray
val credential: MongoCredential = createCredential(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(settings)
val database: MongoDatabase = mongoClient.getDatabase("scalatest")
mongoClient.close()
}
}

Testen Sie Ihre Verbindung

Die Scala-Treiber-Erste-Schritte-Seiten enthalten Beispiele, wie Sie Ihre Verbindung testen können.

Referenzen:

Erste Schritte mit scala unter Verwendung von MongoDB

Mongo Scala-API

Teilen Sie uns mit, wenn Sie Probleme haben, sich mit dem Scala-Treiber mit MongoDB zu verbinden. Wir bieten verwaltete Optionen für alle Ihre MongoDB-Anforderungen.