sql >> Database >  >> NoSQL >> MongoDB

MongoDB-zelfstudie:verbinding maken met MongoDB in Scala

MongoDB heeft voor veel programmeertalen een uitgebreide driver set. In de volgende zelfstudie laten we u de verschillende nuances zien van het verbinden met MongoDB met behulp van het Scala-stuurprogramma.

Installatie stuurprogramma

Het Scala-stuurprogramma van MongoDB kan aan uw project worden toegevoegd met behulp van de volgende afhankelijkheid -

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

Je kunt ook het MongoDB Scala-stuurprogramma downloaden van de github-pagina.

Scala Driver voor MongoDB wordt, net als Java, geleverd met meerdere klassen om verbindingen met een MongoDB-instantie te vergemakkelijken.

Scala Driver voor MongoDB wordt, net als Java, geleverd met meerdere klassen om verbindingen met een MongoDB-instantie te vergemakkelijken. Klik om te Tweeten

Laten we dit stap voor stap doen:

Verbinding

Een verbinding met een MongoDB-instantie kan worden opgezet met behulp van een Mongo-client. MongoClient is een klasse die kan worden gebruikt om verbindingen met MongoDB te beheren. De eenvoudigste manier om een ​​verbinding tot stand te brengen is door -

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

Opties zoals authenticatie, poortnummer etc. kunnen worden ingesteld in de verbindingsreeks. Een replicasetoptie kan bijvoorbeeld worden ingesteld als /?replicaSet=rs0 . Ga voor een volledige lijst met opties naar de URI-opties van de verbindingsreeks.

Als alternatief kan een MongoClientSettings()-klasse worden gebruikt om het gedrag van een Mongo-client te regelen. Een ClusterSettings-klasse kan worden gebruikt om clusterinstellingen toe te voegen aan de Mongoclientsettings-klasse. Een eenvoudige verbinding met deze drie klassen kan als volgt zijn -

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)

De verbinding gebruikt standaard  AsynchronousSocketChannel van uw systemen JDK , als u SSL gebruikt of een JDK-versie ouder dan 1.7 heeft, moet u Netty gebruiken zoals beschreven in de SSL-sectie.

SSL

Uw verbinding met MongoDB kan worden beveiligd met SSL. In onze andere blogpost 'Clusters beveiligen met SSL' wordt het belang van SSL beschreven.

Om het door de MongoDB-server gepresenteerde certificaat te valideren, moet u de CA van de ondertekeningsautoriteiten toevoegen aan de trust store van het systeem.

U moet ook eigenschappen voor het stuurprogramma toevoegen om voor dit doel een Netty-bibliotheek te gebruiken in plaats van AsynchronousSocketChannel. U moet de Netty-potten downloaden en toevoegen aan uw huidige projecten, omdat de Scala-afhankelijkheid deze niet downloadt. U hebt ook de volgende importverklaringen nodig -

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

De verbinding met MongoDB met behulp van SSL kan als volgt worden gemaakt -

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

Als u problemen ondervindt bij het verbinden met de server, kan de hostnaam op het SSL-certificaat van uw server anders zijn dan de naam die u opgeeft tijdens het bouwen van de MongoClient. U kunt deze instelling uitschakelen door te gebruiken. .invalidHostNameAllowed(true) in uw SSL-instellingen.

Verificatie

U kunt de MongoCredential-klasse gebruiken om inloggegevens toe te voegen aan uw MongoClientSettings. Een typisch gebruik van de MongoCredentials-klasse is als volgt:

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

Houd er rekening mee dat wanneer u meer dan één host hebt toegevoegd in de clusterinstellingen, u uw inloggegevens als een lijst kunt toevoegen. U kunt bijvoorbeeld List(credential1,credential2).asJava voor twee hosts.

Alles bij elkaar hier is de volledige code om verbinding te maken met een replicaset met 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()
}
}

Uw verbinding testen

Scala-stuurprogramma Aan de slag-pagina's bevat voorbeelden van hoe u uw verbinding kunt testen.

Referenties:

Aan de slag met scala met MongoDB

Mongo Scala-API

Laat het ons weten als u problemen ondervindt bij het verbinden met MongoDB met behulp van de Scala-driver. We bieden beheerde opties voor al uw MongoDB-behoeften.


  1. Fast of Bulk Upsert in pymongo

  2. Afbeelding geretourneerd door REST API wordt altijd weergegeven als defect

  3. AfschaffingWaarschuwing:het luisteren naar gebeurtenissen in de Db-klasse is beëindigd en wordt verwijderd in de volgende hoofdversie

  4. Redis:Kan .rdb niet openen voor opslaan:Toestemming geweigerd