MongoDB に接続する
MongoDB Atlas配置用の接続文字列を取得したら、 Scalaアプリケーションから配置に接続し、Atlasサンプルデータセットをクエリできます。
アプリケーションファイルを作成する
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
ヘルパーメソッドを追加する
次の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 Community フォーラムでサポートを依頼するか、このページの右側または右下にある Rate this pageタブを使用してフィードバックを送信してください。