Docs Menu
Docs Home
/ / /
Scala
/

MongoDB に接続する

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 Community フォーラムでサポートを依頼するか、このページの右側または右下にある Rate this pageタブを使用してフィードバックを送信してください。

戻る

接続文字列の作成