sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB Handledning:Ansluta till MongoDB i Scala

MongoDB har en omfattande drivrutinsuppsättning för många programmeringsspråk. I följande handledning kommer vi att visa dig de olika nyanserna av att ansluta till MongoDB med dess Scala-drivrutin.

Installation av drivrutiner

MongoDB:s Scala-drivrutin kan läggas till ditt projekt med hjälp av följande beroende -

org.mongodbmongo-scala-driver1.0.1

Du kan också ladda ner MongoDB Scala-drivrutin från dess github-sida.

Scala Driver för MongoDB, liksom Java, kommer med flera klasser för att underlätta anslutningar till en MongoDB-instans.

Scala Driver för MongoDB, liksom Java, kommer med flera klasser för att underlätta anslutningar till en MongoDB-instans. Klicka för att tweeta

Låt oss ta det här steg för steg:

Anslutning

En anslutning till en MongoDB-instans kan ställas in med en Mongo-klient. MongoClient är en klass som kan användas för att hantera anslutningar till MongoDB. Det enklaste sättet att skapa en anslutning är att använda -

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

Alternativ som autentisering, portnummer etc. kan ställas in i anslutningssträngen. Till exempel kan ett replikuppsättningsalternativ ställas in som /?replicaSet=rs0 . För en fullständig lista över alternativ besök anslutningssträngens URI-alternativ.

Alternativt kan en MongoClientSettings()-klass användas för att kontrollera beteendet hos en Mongo-klient. En ClusterSettings-klass används för att lägga till klusterinställningar till Mongoclientsettings-klassen. En enkel anslutning med dessa tre klasser kan vara som följer -

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

Anslutningen använder som standard  AsynchronousSocketChannel från ditt system JDK , om du använder SSL eller har en JDK-version tidigare än 1.7 måste du använda Netty enligt beskrivningen i SSL-avsnittet.

SSL

Din anslutning till MongoDB kan säkras med SSL. Vårt andra blogginlägg "Säkra kluster med SSL" beskriver vikten av SSL.

För att validera certifikatet som presenteras av MongoDB-servern måste du lägga till signeringsmyndighetens CA till systemets förtroendelager.

Du måste också lägga till egenskaper för drivrutinen för att kunna använda ett Netty-bibliotek istället för AsynchronousSocketChannel för detta ändamål. Du måste ladda ner Netty-burkarna och lägga till dem i dina nuvarande projekt eftersom Scala-beroendet inte laddar ner det. Du behöver också följande importsatser -

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

Anslutningen till MongoDB med SSL kan göras enligt följande -

valinställningar:MongoClientSettings=MongoClientSettings.builder().clusterSettings(clusterSettings).sslSettings(SslSettings.builder().enabled(true).build()).streamFactoryFactory(NettyStreamFactoryFactory()).build()).> 

Om du har problem med att ansluta till servern kan värdnamnet på din servers SSL-certifikat vara ett annat än det du anger när du bygger MongoClient. Du kan inaktivera den här inställningen genom att använda. .invalidHostNameAllowed(true) i dina Ssl-inställningar.

Autentisering

Du kan använda klassen MongoCredential för att lägga till autentiseringsuppgifter till dina MongoClientSettings. En typisk användning av MongoCredentials-klassen kommer att vara följande -

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

Observera att när du har lagt till mer än en värd i klusterinställningarna kan du lägga till dina referenser som en lista. Du kan till exempel lägga tillList(credential1,credential2).asJava för två värdar.

Här sammanställer du hela koden för att ansluta till en replikuppsättning med SSL i Scala -

import com.mongodb.MongoCredentialimport org.mongodb.scala.bson.collection.mutable.Documentimport org.mongodb.scala.{Completed, FindObservable, MongoClient, MongoClientSettings, MongoCollection, MongoDatabase, Observable,Observer,Observer,Observer,Observer,Observer,Observer org.mongodb.scala.connection.ClusterSettingsimport com.mongodb.MongoCredential._import java.util.logging.{Level, Logger}import org.mongodb.scala.connection.{NettyStreamFactoryFactory,SslSettings.collection}import scalavaworld {.newworld def main(args:Array[String]):Enhet ={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 användare:String ="testuser"val databasnamn:String ="scalatest" val lösenord:Array[Char] ="".toCharArrayval referens:MongoCredential =createCredent ial(användare, databasnamn, lösenord) valinställningar:MongoClientSettings =MongoClientSettings.builder().clusterSettings(clusterSettings).credentialList(List(credential,credential).asJava).sslSettings(SslSettings.builder().enabled(true). ()).streamFactoryFactory(NettyStreamFactoryFactory()).build()val mongoClient:MongoClient =MongoClient(inställningar)val databas:MongoDatabase =mongoClient.getDatabase("scalatest")mongoClient.close()}}

Testa din anslutning

Scala-drivrutin Komma igång-sidorna har exempel på hur du kan testa din anslutning.

Referenser:

Komma igång med scala med MongoDB

Mongo Scala API

Låt oss veta om du har några problem med att ansluta till MongoDB med dess Scala-drivrutin. Vi erbjuder hanterade alternativ för alla dina MongoDB-behov.


  1. MongoDB fråga $in med regex array av element

  2. Hämta index för ett objekt efter värde i en redis-lista

  3. Klona en samling i MongoDB

  4. MongoDB/Mongoose frågar vid ett specifikt datum?