Docs Menu
Docs Home
/ /

Scalaドライバーを使い始める

MongoDB Scalaドライバーは、 Java Reactive Streams ドライバーに構築された非同期APIであり、 MongoDBに接続し、配置に保存されているデータを操作するために使用できます。 このガイドでは、 Scalaドライバーを使用してMongoDB AtlasでホストされているMongoDBクラスターに接続し、クラスター内のデータをクエリするアプリケーションを作成する方法について説明します。

Tip

MongoDB Atlas は、MongoDB 配置をホストする完全管理のクラウドデータベース サービスです。このガイドの手順に従い、独自の無料(クレジット カード不要)MongoDB Atlas 配置を作成できます。

このガイドに従って、サンプルScalaアプリケーションをMongoDB Atlas配置に接続します。 別のドライバーまたは プログラミング言語を使用してMongoDBに接続する場合は、 公式ドライバーの リストを参照してください。

1

開発を行う前に、開発環境に次の依存関係がインストールされていることを確認してください。

  • JDK バージョン 8 以降

  • sbt バージョン 1 以降

2

シェルで次のコマンドを実行して、このプロジェクト用に scala-quickstart というディレクトリを作成します。

mkdir scala-quickstart

オペレーティング システムに対応するタブを選択し、次のコマンドを実行して、scala-quickstartディレクトリに build.sbtファイルを作成します。

cd scala-quickstart
touch build.sbt
cd scala-quickstart
type nul > build.sbt
3

build.sbtファイルに移動し、次のコードを追加して、アプリケーションでScalaドライバーを使用します。

ThisBuild / scalaVersion := "2.13.16"
libraryDependencies += "org.mongodb.scala" %% "mongo-scala-driver" % "5.6.1"

このコードは、 Scalaバージョン 2.13.16 とScalaドライバー バージョン 5.6.1 を使用するようにアプリケーションを構成します。

これらの手順を完了すると、ドライバーの依存関係がインストールされた新しいプロジェクトディレクトリが作成されます。

MongoDB Atlas では無料階層の MongoDB 配置を作成して、データを保存および管理できます。 MongoDB Atlas は、MongoDB databaseをクラウドでホストおよび管理します。

1

MongoDB の使用開始ガイドを完了して、新しい Atlas アカウントを設定し、サンプルデータを新しい無料階層の MongoDB 配置にロードします。

2

データベースユーザーを作成したら、そのユーザーのユーザー名とパスワードを安全な場所に保存して、後の手順で使用します。

これらの手順を完了すると、Atlas に新しい無料階層の MongoDB 配置が作成され、データベースユーザーの認証情報が作成され、データベースに サンプル データがロードされます 。

MongoDB配置に接続するには、 接続string とも呼ばれる 接続 URIMongoDB を提供します。これは、 配置に接続する方法と接続中の動作をドライバーに指示します。

接続stringには、配置のホスト名またはIPアドレスとポート、認証メカニズム、ユーザー認証情報(該当する場合)、および接続オプションが含まれます。

Atlas でホストされていないインスタンスまたは配置に接続する方法については、「 接続ターゲットの選択 」ガイドを参照してください。

1

To retrieve your connection string for the deployment that you created in the previous step, log in to your Atlas account and navigate to the Clusters page under the Database section. Click the Connect button for your new deployment.

Atlas UI のクラスター セクションの接続ボタン

データベースユーザーをまだ設定していない場合、 MongoDB は新しいユーザーを作成して設定するように要求します。

Connect to your application セクションの下の Drivers ボタンをクリックし、Driver 選択メニューから「Scala」を選択し、Version 選択メニューからインストールしたバージョンに最適なバージョンを選択します。

接続文字列のみを表示するには、View full code sample オプションが選択されていないことを確認します。

2

次のスクリーンショットに示すように、接続文字列の右側にある ボタンをクリックして、接続stringをクリップボードにコピーします。

UIの接続 の横にあるコピーボタンstringAtlas
3

この接続文字列をテキストエディタのファイルに貼り付け、<db_password> プレースホルダーをデータベースユーザーのパスワードに置き換えます。接続文字列には、すでにデータベースユーザーのユーザー名が入力されています。

このファイルを安全な場所に保存して、次の手順で使用します。

これらの手順を完了すると、Atlas クラスターに対応する接続文字列が作成されます。

MongoDB Atlas配置用の接続文字列を取得したら、 Scalaアプリケーションから配置に接続し、Atlasサンプルデータセットをクエリできます。

1

このガイドのダウンロードとインストールのステップで作成した scala-quickstartディレクトリに移動し、src/main/scala/quickstart のネストされたディレクトリを作成します。

オペレーティング システムに対応するタブを選択し、次のコマンドを実行して、quickstart サブディレクトリに Main.scalaファイルを作成します。

cd src/main/scala/quickstart
touch Main.scala
cd src/main/scala/quickstart
type nul > Main.scala
2

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())}")
}
}

このファイルを使用すると、クエリ結果を出力するためのヘルパーメソッドにアクセスできます。

3

次のコードをコピーして、 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()
}
}
4

<connection string> プレースホルダーを、このガイドの接続文字列の作成ステップからコピーした接続文字列に置き換えます。

5

プロジェクトルートディレクトリで、次のコマンドを実行して 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ドライバーの詳細については、次のリソースを参照してください。

注意

この手順で問題が発生した場合は、このページの右側または右下にある Rate this pageタブを使用してフィードバックを送信してください。

MongoDB Stack Overflowタグ または MongoDB Reddit Community を使用して、一般的な質問のサポートを見つけることができます。

戻る

Overview