MongoDB má rozsáhlou sadu ovladačů pro mnoho programovacích jazyků. V následujícím tutoriálu vám ukážeme různé nuance připojení k MongoDB pomocí ovladače Scala.
Instalace ovladače
Ovladač Scala MongoDB lze přidat do vašeho projektu pomocí následující závislosti -
org.mongodb mongo-scala-driver 1.0.1 Ovladač MongoDB Scala si také můžete stáhnout z jeho stránky github.
Ovladač Scala pro MongoDB, stejně jako Java, přichází s několika třídami, které usnadňují připojení k instanci MongoDB.
Ovladač Scala pro MongoDB, stejně jako Java, přichází s několika třídami pro usnadnění připojení k instanci MongoDB. Klikněte na TweetPojďme na to krok za krokem:
Připojení
Připojení k instanci MongoDB lze nastavit pomocí klienta Mongo. MongoClient je třída, kterou lze použít ke správě připojení k MongoDB. Nejjednodušším způsobem vytvoření připojení by bylo použití -
val client:MongoClient=MongoClient(":27017") V připojovacím řetězci lze nastavit možnosti jako autentizace, číslo portu atd. Například možnost sady replik lze nastavit jako
/?replicaSet=rs0
. Úplný seznam možností naleznete na stránce Možnosti URI řetězce připojení.Alternativně lze k řízení chování klienta Mongo použít třídu MongoClientSettings(). Třídu ClusterSettings lze použít k přidání nastavení clusteru do třídy Mongoclientsettings. Jednoduché připojení pomocí těchto tří tříd může být následující -
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)Připojení ve výchozím nastavení používá AsynchronousSocketChannel z vašich systémů JDK, pokud používáte SSL nebo máte verzi JDK starší než 1.7, budete muset použít Netty, jak je popsáno v části SSL.
SSL
Vaše připojení k MongoDB lze zabezpečit pomocí SSL. Náš další příspěvek na blogu „Zabezpečení clusterů pomocí SSL“ popisuje důležitost SSL.
Chcete-li ověřit certifikát předložený serverem MongoDB, budete muset přidat certifikační autoritu podpisových autorit do úložiště důvěryhodnosti systému.
Budete také muset přidat vlastnosti pro ovladač, abyste pro tento účel mohli použít knihovnu Netty namísto AsynchronousSocketChannel. Budete si muset stáhnout sklenice Netty a přidat je do svých aktuálních projektů, protože závislost Scala je nestahuje. Budete také potřebovat následující příkazy pro import -
importovat org.mongodb.scala.connection.{NettyStreamFactoryFactory,SslSettings}Připojení k MongoDB pomocí SSL lze provést následovně -
nastavení hodnot:MongoClientSettings=MongoClientSettings.builder().clusterSettings(clusterSettings).sslSettings(SslSettings.builder().enabled(true).build()).streamFactoryFactory(NettyStreamFactory))Pokud máte problémy s připojením k serveru, název hostitele na certifikátu SSL vašeho serveru se může lišit od názvu, který jste zadali při sestavování MongoClient. Toto nastavení můžete deaktivovat pomocí.
.invalidHostNameAllowed(true)
ve vašem SslSettings.Ověření
K přidání přihlašovacích údajů do nastavení MongoClientSettings můžete použít třídu MongoCredential. Typické použití třídy MongoCredentials bude následující -
val settings:MongoClientSettings =MongoClientSettings.builder().clusterSettings(clusterSettings).credentialList(credential).sslSettings(SslSettings.builder().enabled(true).build()).streamFactoryFactory(NettyStrectory). ()Všimněte si, že když jste v nastavení clusteru přidali více než jednoho hostitele, můžete své přihlašovací údaje přidat jako seznam. Můžete například přidat
List(credential1,credential2).asJava
pro dva hostitele.Zde je kompletní kód pro připojení k sadě replik pomocí SSL ve Scale -
import com.mongodb.MongoCredentialimport org.mongodb.scala.bson.collection.mutable.Documentimport org.mongodb.scala.{Completed, FindObservable, MongoClient, MongoClientSettings, MongoCollection, MongoDatabase, Observable}Observable}Observable org.mongodb.scala.connection.ClusterSettingsimport com.mongodb.MongoCredential._import java.util.logging.{Level, Logger}import org.mongodb.scala.connection.{NettyStreamFactoryFactory,SslSettings}import {newvert scala.co. 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] ="".toCharArrayval pověření:MongoCredential =createCredent Nastavení ial(uživatel, název databáze, heslo)val:MongoClientSettings =MongoClientSettings.builder().clusterSettings(clusterSettings).credentialList(List(credential,credential).asJava).sslSettings(SslSettings.builder().enabled(true).build). ()).streamFactoryFactory(NettyStreamFactoryFactory()).build()val mongoClient:MongoClient =MongoClient(nastavení)val databáze:MongoDatabase =mongoClient.getDatabase("scalatest")mongoClient.close()}} Testování vašeho připojení
Stránky Začínáme s ovladačem Scala obsahují příklady, jak můžete otestovat připojení.
Odkazy:
Začínáme se scalou pomocí MongoDB
Mongo Scala API
Dejte nám vědět, pokud máte nějaké problémy s připojením k MongoDB pomocí ovladače Scala. Nabízíme spravované možnosti pro všechny vaše potřeby MongoDB.