O MongoDB possui um extenso conjunto de drivers para muitas linguagens de programação. No tutorial a seguir, mostraremos as várias nuances de conexão ao MongoDB usando seu driver Scala.
Instalação do driver
O driver Scala do MongoDB pode ser adicionado ao seu projeto usando a seguinte dependência -
org.mongodb mongo-scala-driver 1.0.1
Você também pode baixar o driver MongoDB Scala em sua página do github.
O Scala Driver for MongoDB, assim como o Java, vem com várias classes para facilitar as conexões com uma instância do MongoDB.
O Scala Driver for MongoDB, assim como o Java, vem com várias classes para facilitar as conexões com uma instância do MongoDB. Clique para Tweet
Vamos fazer este passo a passo:
Conexão
Uma conexão com uma instância do MongoDB pode ser configurada usando um cliente Mongo. MongoClient é uma classe que pode ser usada para gerenciar conexões com o MongoDB. A maneira mais simples de criar uma conexão seria usando -
val client:MongoClient=MongoClient(":27017")
Opções como autenticação, número de porta etc. podem ser definidas na string de conexão. Por exemplo, uma opção de conjunto de réplicas pode ser definida como/?replicaSet=rs0
. Para obter uma lista completa de opções, visite as opções de URI da cadeia de conexão.
Alternativamente, uma classe MongoClientSettings() pode ser usada para controlar o comportamento de um Mongo Client. Uma classe ClusterSettings pode ser usada para adicionar configurações de cluster à classe Mongoclientsettings. Uma conexão simples usando essas três classes pode ser a seguinte -
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)
A conexão por padrão usa AsynchronousSocketChannel do seu sistema JDK . Se você estiver usando SSL ou tiver uma versão do JDK anterior à 1.7, precisará usar o Netty conforme descrito na seção SSL.
SSL
Sua conexão com o MongoDB pode ser protegida usando SSL. Nossa outra postagem do blog "Protegendo clusters com SSL" descreve a importância do SSL.
Para validar o certificado apresentado pelo servidor MongoDB, você precisará adicionar a autoridade de assinatura CA ao armazenamento confiável do sistema.
Você também precisará adicionar propriedades para o driver para usar uma biblioteca Netty em vez de AsynchronousSocketChannel para essa finalidade. Você precisará baixar os jars do Netty e adicioná-los aos seus projetos atuais, pois a dependência do Scala não o baixa. Você também precisará das seguintes instruções de importação -
importar org.mongodb.scala.connection.{NettyStreamFactoryFactory,SslSettings}
A conexão com o MongoDB usando SSL pode ser feita da seguinte forma -
val settings:MongoClientSettings=MongoClientSettings.builder().clusterSettings(clusterSettings).sslSettings(SslSettings.builder().enabled(true).build()).streamFactoryFactory(NettyStreamFactoryFactory()).build()
Se você tiver problemas para se conectar ao servidor, o nome do host no certificado SSL do seu servidor pode ser diferente daquele que você especificou ao criar o MongoClient. Você pode desativar essa configuração usando..invalidHostNameAllowed(true)
em seu SSLSettings.
Autenticação
Você pode usar a classe MongoCredential para adicionar credenciais ao seu MongoClientSettings. Um uso típico da classe MongoCredentials será o seguinte:
configurações de valor:MongoClientSettings =MongoClientSettings.builder().clusterSettings(clusterSettings).credentialList(credential).sslSettings(SslSettings.builder().enabled(true).build()).streamFactoryFactory(NettyStreamFactoryFactory()).build. ()
Observe que, quando você adiciona mais de um host nas configurações do cluster, pode adicionar suas credenciais como uma lista. Por exemplo, você pode adicionarList(credential1,credential2).asJava
para dois hospedeiros.
Juntando tudo aqui está o código completo para se conectar a um conjunto de réplicas com SSL em Scala -
importar com.mongodb.MongoCredentialimport org.mongodb.scala.bson.collection.mutable.Documentimport org.mongodb.scala.{Completed, FindObservable, MongoClient, MongoClientSettings, MongoCollection, MongoDatabase, Observable,Observer, ReadPreference, ServerAddress}importar 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" val password:Array[Char] ="".toCharArrayval credencial: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(settings)val banco de dados:MongoDatabase =mongoClient.getDatabase("scalatest")mongoClient.close()}} Testando sua conexão
As páginas de introdução do driver Scala têm exemplos de como você pode testar sua conexão.
Referências:
Introdução ao scala usando o MongoDB
API Mongo Scala
Informe-nos se você tiver problemas para se conectar ao MongoDB usando o driver Scala. Oferecemos opções gerenciadas para todas as suas necessidades do MongoDB.