MongoDB има обширен набор от драйвери за много езици за програмиране. В следващия урок ще ви покажем различните нюанси на свързване с MongoDB с помощта на неговия Scala драйвер.
Инсталиране на драйвер
Драйверът Scala на MongoDB може да бъде добавен към вашия проект, като се използва следната зависимост -
предварително> org.mongodb mongo-scala-driver 1.0.1 Можете също да изтеглите драйвер за MongoDB Scala от неговата страница в github.
Scala Driver за MongoDB, като Java, се предлага с множество класове за улесняване на връзките с екземпляр на MongoDB.
Scala Driver за MongoDB, подобно на Java, идва с множество класове за улесняване на връзките към екземпляр на MongoDB. Кликнете, за да туитиратеНека направим това стъпка по стъпка:
Връзка
Връзка към екземпляр на MongoDB може да се настрои с помощта на Mongo клиент. MongoClient е клас, който може да се използва за управление на връзки към MongoDB. Най-простият начин за създаване на връзка е да използвате -
val client:MongoClient=MongoClient(":27017") В низа за връзка могат да бъдат зададени опции като удостоверяване, номер на порт и т.н. Например, опция за набор от реплика може да бъде зададена като
/?replicaSet=rs0
. За пълен списък с опции посетете опции за URI за низ за връзка.Като алтернатива може да се използва клас MongoClientSettings() за контрол на поведението на Mongo Client. Клас ClusterSettings се използва за добавяне на настройки на клъстер към класа Mongoclientsettings. Една проста връзка, използваща тези три класа, може да бъде както следва -
val clusterSettings:ClusterSettings=ClusterSettings.builder().hosts(List(newServerAddress("mongodb2.example.com:27345"),newServerAddress("mongodb1.example.com:20026")).asJava).build(). )val настройки:<MongoClientSettings=MongoClientSettings.builder().clusterSettings(clusterSettings)).build()val mongoClient:MongoClient=MongoClient(settings)Връзката по подразбиране използва AsynchronousSocketChannel от вашите системи JDK, ако използвате SSL или имате версия на JDK по-стара от 1.7, ще трябва да използвате Netty, както е описано в раздела SSL.
SSL
Вашата връзка с MongoDB може да бъде защитена чрез SSL. Другата ни публикация в блога „Осигуряване на клъстери с SSL“ описва важността на SSL.
За да потвърдите сертификата, представен от сървъра MongoDB, ще трябва да добавите CA на органите за подписване към хранилището за доверие на системата.
Ще трябва също да добавите свойства за драйвера, за да използвате библиотека Netty вместо AsynchronousSocketChannel за тази цел. Ще трябва да изтеглите Netty бурканите и да ги добавите към текущите си проекти, тъй като зависимостта на Scala не го изтегля. Ще ви трябват и следните оператори за импортиране -
import org.mongodb.scala.connection.{NettyStreamFactoryFactory,SslSettings}Връзката с MongoDB чрез SSL може да се осъществи по следния начин -
val настройки:MongoClientSettings=MongoClientSettings.builder().clusterSettings(clusterSettings).sslSettings(SslSettings.builder().enabled(true).build()).streamFactoryFactory(NettyStreamFactoryFactory()prebuild()).>Ако имате проблеми със свързването със сървъра, тогава името на хоста в SSL сертификата на вашия сървър може да е различно от това, което сте посочили при изграждането на MongoClient. Можете да деактивирате тази настройка, като използвате.
.invalidHostNameAllowed(true)
във вашите SslSettings.Удостоверяване
Можете да използвате класа MongoCredential за добавяне на идентификационни данни към вашите MongoClientSettings. Типично използване на клас MongoCredentials ще бъде както следва -
val настройки:MongoClientSettings =MongoClientSettings.builder().clusterSettings(clusterSettings).credentialList(credential).sslSettings(SslSettings.builder().enabled(true).build()).streamFactoryFactory(NettyFStreamFactory(NettyFStreamFactory). ()Имайте предвид, че когато сте добавили повече от един хост в настройките на клъстера, тогава можете да добавите вашите идентификационни данни като списък. Например, можете да добавите
List(credential1,credential2).asJava
за двама домакини.Събирайки всичко това заедно, тук е пълният код за свързване към набор от реплика със SSL в Scala -
import com.mongodb.MongoCredentialimport org.mongodb.scala.bson.collection.mutable.Documentimport org.mongodb.scala.{Completed, FindObservable, MongoClient, MongoClientSettings, MongoCollection, MongoCollection, MongoDatabase, ReaderAddress, Server, ObservableObservim} org.mongodb.scala.connection.ClusterSettingsimport com.mongodb.MongoCredential._import java.util.logging.{Level, Logger}импорт org.mongodb.scala.connection.{NettyStreamFactoryFactory,SslSettings}import scala. def main(args:Array[String]):Unit ={val mongoLogger:Logger =Logger.getLogger("com.mongodb")mongoLogger.setLevel(Level.SEVERE);val clusterSettings:ClusterSettings =ClusterSettings.builder().hosts (Списък(нов адрес на сървър("example.com:27345"), нов адрес на сървър("example.com:20026")).asJava).build()val потребител:String ="testuser"val име на базата данни:String ="scalatest" val парола:Array[Char] =">".toCharArrayval идентификационни данни:MongoCredential =createCredent ial(потребител, име на база данни, парола)val настройки:MongoClientSettings =MongoClientSettings.builder().clusterSettings(clusterSettings).credentialList(List(credential,credential).asJava).sslSettings(SslSettings.builder().enabled(true). ()).streamFactoryFactory(NettyStreamFactoryFactory()).build()val mongoClient:MongoClient =MongoClient(settings)val база данни:MongoDatabase =mongoClient.getDatabase("scalatest")mongoClient.close()}} Тестване на връзката ви
Scala драйвер На страниците за начало има примери за това как можете да тествате връзката си.
Препратки:
Първи стъпки със scala с помощта на MongoDB
API на Mongo Scala
Уведомете ни, ако имате проблеми със свързването с MongoDB с помощта на неговия Scala драйвер. Ние предлагаме управлявани опции за всички ваши нужди на MongoDB.