MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Hướng dẫn về MongoDB:Kết nối với MongoDB trong Scala

MongoDB có một bộ trình điều khiển mở rộng cho nhiều ngôn ngữ lập trình. Trong hướng dẫn sau, chúng tôi sẽ cho bạn thấy các sắc thái khác nhau của việc kết nối với MongoDB bằng trình điều khiển Scala của nó.

Cài đặt trình điều khiển

Trình điều khiển Scala của MongoDB có thể được thêm vào dự án của bạn bằng cách sử dụng phần phụ thuộc sau -

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

Bạn cũng có thể tải xuống trình điều khiển MongoDB Scala từ trang github của nó.

Scala Driver cho MongoDB, giống như Java, đi kèm với nhiều lớp để tạo điều kiện kết nối với một phiên bản MongoDB.

Scala Driver cho MongoDB, giống như Java, đi kèm với nhiều lớp để tạo điều kiện kết nối với một phiên bản MongoDB. Nhấp để đăng bài

Hãy thực hiện từng bước sau:

Kết nối

Có thể thiết lập kết nối với phiên bản MongoDB bằng ứng dụng khách Mongo. MongoClient là một lớp có thể được sử dụng để quản lý các kết nối đến MongoDB. Cách đơn giản nhất để tạo kết nối là sử dụng -

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

Các tùy chọn như xác thực, số cổng, v.v. có thể được đặt trong chuỗi kết nối. Ví dụ:tùy chọn tập hợp bản sao có thể được đặt thành /?replicaSet=rs0 . Để có danh sách đầy đủ các tùy chọn, hãy truy cập tùy chọn URI chuỗi kết nối.

Ngoài ra, một lớp MongoClientSettings () có thể được sử dụng để kiểm soát hành vi của một ứng dụng khách Mongo. Một lớp ClusterSettings được sử dụng để thêm cài đặt cụm vào lớp Mongoclientsettings. Một kết nối đơn giản sử dụng ba lớp này có thể như sau -

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)

Kết nối theo mặc định sử dụng AsynchronousSocketChannel từ JDK hệ thống của bạn, nếu bạn đang sử dụng SSL hoặc có phiên bản JDK cũ hơn 1.7, bạn sẽ cần sử dụng Netty như được mô tả trong phần SSL.

SSL

Kết nối của bạn với MongoDB có thể được bảo mật bằng SSL. Bài đăng trên blog khác của chúng tôi "Bảo mật các cụm với SSL" mô tả tầm quan trọng của SSL.

Để xác thực chứng chỉ do máy chủ MongoDB cung cấp, bạn sẽ cần thêm cơ quan ký CA vào kho lưu trữ tin cậy của hệ thống.

Bạn cũng sẽ cần thêm thuộc tính cho trình điều khiển để sử dụng thư viện Netty thay vì AsynchronousSocketChannel cho mục đích này. Bạn sẽ cần tải xuống các lọ Netty và thêm chúng vào các dự án hiện tại của mình vì phần phụ thuộc Scala không tải xuống được. Bạn cũng sẽ cần các câu lệnh nhập sau -

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

Kết nối với MongoDB bằng SSL có thể được thực hiện như sau -

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

Nếu bạn gặp sự cố khi kết nối với máy chủ, thì tên máy chủ trên chứng chỉ SSL của máy chủ của bạn có thể khác với tên mà bạn chỉ định khi xây dựng MongoClient. Bạn có thể tắt cài đặt này bằng cách sử dụng. .invalidHostNameAllowed(true) trong SslSettings của bạn.

Xác thực

Bạn có thể sử dụng lớp MongoCredential để thêm thông tin đăng nhập vào MongoClientSettings của mình. Cách sử dụng điển hình của lớp MongoCredentials sẽ như sau -

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

Lưu ý rằng khi bạn đã thêm nhiều máy chủ lưu trữ trong cài đặt cụm thì bạn có thể thêm thông tin đăng nhập của mình dưới dạng Danh sách. Ví dụ:bạn có thể thêm List(credential1,credential2).asJava cho hai máy chủ.

Tổng hợp tất cả lại với nhau ở đây là mã hoàn chỉnh để kết nối với tập hợp bản sao với SSL trong 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()
}
}

Kiểm tra kết nối của bạn

Trình điều khiển Scala Các trang bắt đầu có các ví dụ về cách bạn có thể kiểm tra kết nối của mình.

Tài liệu tham khảo:

Bắt đầu với scala bằng MongoDB

API Mongo Scala

Hãy cho chúng tôi biết nếu bạn gặp bất kỳ sự cố nào khi kết nối với MongoDB bằng trình điều khiển Scala của nó. Chúng tôi cung cấp các tùy chọn được quản lý cho tất cả các nhu cầu MongoDB của bạn.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Làm cách nào để lấy nhiều tài liệu bằng mảng id MongoDb?

  2. MongoDB:Tìm tài liệu con trong tham số so khớp mảng

  3. Cài đặt / thiết lập Mongos trong Elastic Beanstalk

  4. Làm thế nào bạn có thể chỉ định thứ tự của các thuộc tính trong một đối tượng javascript cho một chỉ mục MongoDB trong node.js?

  5. Truyền dữ liệu NoSQL với MongoDB &Kafka