Scalaドライバーを使い始める
項目一覧
Overview
MongoDB Scalaドライバーは、 Java Reactive Streams ドライバーに構築された非同期APIであり、 MongoDBに接続し、配置に保存されているデータを操作するために使用できます。 このガイドでは、 Scalaドライバーを使用してMongoDB AtlasでホストされているMongoDBクラスターに接続し、クラスター内のデータをクエリするアプリケーションを作成する方法について説明します。
Tip
MongoDB Atlas は、MongoDB 配置をホストする完全管理のクラウドデータベース サービスです。このガイドの手順に従い、独自の無料(クレジット カード不要)MongoDB Atlas 配置を作成できます。
このガイドに従って、サンプルScalaアプリケーションをMongoDB Atlas配置に接続します。 別のドライバーまたは プログラミング言語を使用してMongoDBに接続する場合は、 公式ドライバーの リストを参照してください。
ダウンロードとインストール
これらの手順を完了すると、ドライバーの依存関係がインストールされた新しいプロジェクトディレクトリが作成されます。
MongoDB 配置の作成
MongoDB Atlas では無料階層の MongoDB 配置を作成して、データを保存および管理できます。 MongoDB Atlas は、MongoDB databaseをクラウドでホストおよび管理します。
Atlas で無料の MongoDB 配置を作成
Atlas の使用開始ガイドを完了して、新しい Atlas アカウントを設定し、サンプル データを新しい無料階層 MongoDB 配置にロードします。
これらの手順を完了すると、Atlas に新しい無料階層の MongoDB 配置が作成され、データベースユーザーの認証情報が作成され、データベースに サンプル データがロードされます 。
接続文字列の作成
MongoDB配置に接続するには、 接続string とも呼ばれる 接続 URIMongoDB を提供します。これは、 配置に接続する方法と接続中の動作をドライバーに指示します。
接続stringには、配置のホスト名またはIPアドレスとポート、認証メカニズム、ユーザー認証情報(該当する場合)、および接続オプションが含まれます。
Atlas でホストされていないインスタンスまたは配置に接続する方法については、「 接続ターゲットの選択 」ガイドを参照してください。
MongoDB Atlas 接続文字列を見つける
前のステップ で作成した配置の接続文字列を取得するには、Atlas アカウントにログしてDatabase Connectセクションに移動し、新しい配置の [] ボタンをクリックします。

次に、Connect to your application ヘッダーの下の Drivers オプションを選択します。 Driver 選択メニューから「Scala」を選択し、Version 選択メニューからインストールしたバージョンに最適なバージョンを選択します。
これらの手順を完了すると、Atlas クラスターに対応する接続文字列が作成されます。
MongoDB に接続する
MongoDB Atlas配置用の接続文字列を取得したら、 Scalaアプリケーションから配置に接続し、Atlasサンプルデータセットをクエリできます。
ヘルパーメソッドを追加する
ドライバーのソースコードから次の Helpers.scala
ファイルをsrc/main/scala/quickstart
ディレクトリに追加します。
package quickstart import java.util.concurrent.TimeUnit import scala.concurrent.Await import scala.concurrent.duration.Duration import org.mongodb.scala._ object Helpers { implicit class DocumentObservable[C](val observable: Observable[Document]) extends ImplicitObservable[Document] { override val converter: (Document) => String = (doc) => doc.toJson } implicit class GenericObservable[C](val observable: Observable[C]) extends ImplicitObservable[C] { override val converter: (C) => String = (doc) => Option(doc).map(_.toString).getOrElse("") } trait ImplicitObservable[C] { val observable: Observable[C] val converter: (C) => String def results(): Seq[C] = Await.result(observable.toFuture(), Duration(10, TimeUnit.SECONDS)) def headResult() = Await.result(observable.head(), Duration(10, TimeUnit.SECONDS)) def printResults(initial: String = ""): Unit = { if (initial.length > 0) print(initial) results().foreach(res => println(converter(res))) } def printHeadResult(initial: String = ""): Unit = println(s"${initial}${converter(headResult())}") } }
このファイルを使用すると、クエリ結果を出力するためのヘルパーメソッドにアクセスできます。
アプリケーションコードを追加する
次のコードをコピーして、 Main.scala
ファイルに貼り付けます。このコードは、 sample_mflix
データベース内のmovies
コレクションをクエリします。
package quickstart import org.mongodb.scala._ import org.mongodb.scala.model.Filters._ import Helpers._ object Main { def main(args: Array[String]): Unit = { val mongoClient = MongoClient("<connection string>") val database: MongoDatabase = mongoClient.getDatabase("sample_mflix") val collection: MongoCollection[Document] = database.getCollection("movies") val filter = equal("title", "The Shawshank Redemption") collection.find(filter).printResults() mongoClient.close() } }
接続文字列の割り当て
<connection string>
プレースホルダーを、このガイドの接続文字列の作成ステップからコピーした接続文字列に置き換えます。
Scalaアプリケーションの実行
プロジェクトルートディレクトリで、次のコマンドを実行して sbt シェル を起動し、アプリケーションを実行します。
sbt run
コマンドライン出力には、検索された映画ドキュメントの詳細が含まれます。
{"_id": {"$oid": "..."}, ... , "genres": ["Crime", "Drama"], "rated": "R", "metacritic": 80, "title": "The Shawshank Redemption", ... }
エラーが発生した場合や出力が表示されない場合は、Main.scala
ファイルに適切な接続stringが指定されており、サンプル データがロードされていることを確認してください。
Tip
次のコマンドを実行中て、 sbt シェルを終了できます。
exit
これらの手順を完了すると、 MongoDBデプロイに接続し、サンプルデータに対してクエリを実行し、一致するドキュメントを返すScalaアプリケーションが作成されます。
次のステップ
クイック スタート チュートリアルを完了しました。
このチュートリアルでは、 MongoDB AtlasでホストされているMongoDBデプロイに接続し、クエリに一致するドキュメントを検索するScalaアプリケーションを作成しました。
Scalaドライバーの詳細については、次のリソースを参照してください。
「データの読み取り」セクションでは、読み取り操作の実行方法を学びます。
「 MongoDB へのデータの書込み」セクションで、書込み操作の実行方法を学びます。
注意
この手順で問題が発生した場合は、MongoDB Community フォーラムでサポートを依頼するか、このページの右側または右下にある Rate this page タブを使用してフィードバックを送信してください。