MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

MongoDB Tutorial:Łączenie się z MongoDB w Scala

MongoDB posiada rozbudowany zestaw sterowników dla wielu języków programowania. W poniższym samouczku pokażemy różne niuanse łączenia się z MongoDB za pomocą sterownika Scala.

Instalacja sterownika

Sterownik Scala MongoDB można dodać do projektu przy użyciu następującej zależności -

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

Możesz również pobrać sterownik MongoDB Scala z jego strony github.

Sterownik Scala dla MongoDB, podobnie jak Java, zawiera wiele klas, aby ułatwić połączenia z instancją MongoDB.

Sterownik Scala dla MongoDB, podobnie jak Java, zawiera wiele klas, które ułatwiają połączenia z instancją MongoDB. Kliknij, aby tweetować

Zróbmy to krok po kroku:

Połączenie

Połączenie z instancją MongoDB można skonfigurować za pomocą klienta Mongo. MongoClient to klasa, która może służyć do zarządzania połączeniami z MongoDB. Najprostszym sposobem na utworzenie połączenia byłoby użycie -

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

Opcje takie jak uwierzytelnianie, numer portu itp. można ustawić w ciągu połączenia. Na przykład opcję zestawu replik można ustawić jako /?replicaSet=rs0 . Aby uzyskać pełną listę opcji, odwiedź opcje URI parametrów połączenia.

Alternatywnie do kontrolowania zachowania klienta Mongo można użyć klasy MongoClientSettings(). Klasa ClusterSettings służy do dodawania ustawień klastra do klasy Mongoclientsettings. Proste połączenie przy użyciu tych trzech klas może wyglądać następująco -

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)

Połączenie domyślnie używa AsynchronousSocketChannel z Twojego systemu JDK , jeśli używasz SSL lub masz wersję JDK wcześniejszą niż 1.7, musisz użyć Netty, jak opisano w sekcji SSL.

SSL

Twoje połączenie z MongoDB może być zabezpieczone za pomocą SSL. Nasz inny post na blogu „Zabezpieczanie klastrów za pomocą SSL” opisuje znaczenie SSL.

Aby zweryfikować certyfikat przedstawiony przez serwer MongoDB, musisz dodać urząd podpisujący CA do magazynu zaufania systemu.

Będziesz także musiał dodać właściwości dla sterownika, aby użyć do tego celu biblioteki Netty zamiast AsynchronousSocketChannel. Będziesz musiał pobrać słoiki Netty i dodać je do swoich bieżących projektów, ponieważ zależność Scala ich nie pobiera. Potrzebne będą również następujące instrukcje importu -

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

Połączenie z MongoDB przy użyciu SSL można wykonać w następujący sposób -

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

Jeśli masz problemy z połączeniem z serwerem, nazwa hosta na certyfikacie SSL serwera może być inna niż ta, którą określisz podczas budowania MongoClient. Możesz wyłączyć to ustawienie, używając. .invalidHostNameAllowed(true) w ustawieniach SSL.

Uwierzytelnianie

Możesz użyć klasy MongoCredential, aby dodać dane logowania do MongoClientSettings. Typowe użycie klasy MongoCredentials będzie wyglądać następująco:

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

Pamiętaj, że po dodaniu więcej niż jednego hosta w ustawieniach klastra możesz dodać swoje poświadczenia jako listę. Na przykład możesz dodaćList(credential1,credential2).asJava dla dwóch hostów.

Podsumowując to wszystko, jest kompletny kod do połączenia z zestawem replik z SSL w 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()
}
}

Testowanie połączenia

Sterownik Scala Na stronach Pierwsze kroki znajdują się przykłady, w jaki sposób można przetestować połączenie.

Referencje:

Rozpoczęcie pracy ze scalą przy użyciu MongoDB

Mongo Scala API

Daj nam znać, jeśli masz problemy z połączeniem się z MongoDB przy użyciu sterownika Scala. Oferujemy opcje zarządzane dla wszystkich Twoich potrzeb MongoDB.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB $rand

  2. Pobieranie znacznika czasu z identyfikatora mongodb

  3. Błędne obliczanie odległości za pomocą MongoDB

  4. Zrozumienie limitu rozmiaru dokumentu MongoDB BSON

  5. Spring data mongodb nie zamyka połączeń mongodb