Java ドライバー クイック スタート
項目一覧
はじめに
このガイドでは、 Java ドライバーを使用して MongoDB Atlas cluster に接続するアプリケーションを作成する方法について説明します。別のドライバーまたはプログラミング言語を使用して MongoDB に接続する場合は、公式 MongoDB ドライバーのリストを参照してください。
Java ドライバーを使用すると、Java アプリケーションから MongoDB クラスターに接続して通信できます。
MongoDB Atlas は、MongoDB クラスターでデータをホストする完全管理クラウドデータベース サービスです。このガイドでは、独自の無料クラスター(クレジットカードは不要)を開始する方法を説明します。
次の手順を参照して、Java アプリケーションを MongoDB Atlas クラスターに接続します。
プロジェクトを設定する
Java Development Kit(JDK)をインストールする
システムに JDK 8 以降がインストールされていることを確認してください。Java のバージョンを確認してJDKをインストールする方法の詳細については、 Oracle の JDKインストールの概要ドキュメント を参照してください。
プロジェクトを作成する
このガイドでは、Maven または Gradle を使用して MongoDB Java ドライバーの依存関係を追加する方法を示します。Maven または Gradle を構成してプロジェクトをビルドおよび実行しやすくするために、Intellij IDEA や Eclipse IDE などの統合開発環境(IDE)を使用することをお勧めします。
IDE を使用していない場合は、「 Maven の構築 」を参照してください。 または 新しい Gradle ビルドの作成 プロジェクトをセットアップする方法の詳細については、 を参照してください。
MongoDB を依存関係として追加する
Maven を使用している場合は、次のものを pom.xml
依存関係リストに追加します。
<dependencies> <dependency> <groupId>org.mongodb</groupId> <artifactId>mongodb-driver-sync</artifactId> <version>4.9.1</version> </dependency> </dependencies>
Gradle を使用している場合は、次のものを build.gradle
依存関係リストに追加します。
dependencies { implementation 'org.mongodb:mongodb-driver-sync:4.9.1' }
注意
Java ドライバーをインストールするには、ビルド ツールを使用することをお勧めします。ただし、ドライバーと依存関係をダウンロードする必要がある場合は、 MongoDB Group Mavenリポジトリで JAR ファイルを見つけることができます。Java ドライバーでは、 bson
、mongodb-driver-core
、および slf4j-api
依存関係の JAR ファイルをダウンロードする必要があります。
依存関係を構成したら、それらがプロジェクトで使用可能であることを確認します。そのためには、依存関係マネージャーを実行し、IDE でプロジェクトを更新する必要がある場合があります。
MongoDB クラスターを作成する
Atlasで無料階層クラスターをセットアップする
Java プロジェクトの依存関係を設定したら、データを保存および管理できる MongoDB クラスターを作成します。Atlas スタートガイド を完了して、新しい Atlas アカウントを設定し、無料レベルの MongoDB クラスターを作成して起動し、データセットをロードして、データと対話します。
Atlas ガイドの手順を完了すると、Atlas に新しい MongoDB クラスターがデプロイされ、新しいデータベース ユーザーが作成され、サンプル データセットがクラスターにロードされます。
クラスターに接続する
この手順では、MongoDB Java ドライバーを使用して MongoDB クラスターに接続し、サンプル データに対してクエリを実行するアプリケーションを作成して実行します。
MongoDB クラスターへの接続方法に関する指示を、接続文字列と呼ばれる文字列でドライバーに渡します。この文字列には、クラスターのホスト名または IP アドレスとポート、認証メカニズム、ユーザー認証情報(該当する場合)、およびその他の接続オプションに関する情報が含まれます。
Atlas によってホストされていないインスタンスまたはクラスターに接続する場合は、接続文字列の形式方法については、MongoDB に接続するその他の方法を参照してください。
前のステップで作成したクラスターとユーザーの接続文字列を取得するには、Atlas アカウントにログインして「Database」セクションに移動し、次に示すように接続するクラスターの [Connect] をクリックします。
Connect Your Application ステップに進み、[Java ドライバー] を選択します。バージョンは [4.3以降] を選択します。[Copy] アイコンをクリックして、次に示すように接続文字列 をクリップボードにコピーします。
Atlas 接続文字列を安全な場所に保存し、次の手順でアクセスできます。
アプリケーションから MongoDB クラスターをクエリする
次に、プロジェクトの基本パッケージ ディレクトリに、QuickStart.java
というアプリケーションを格納するファイルを作成します。次のサンプル コードを使用して、MongoDB Atlas のサンプル データセットに対してクエリを実行し、 uri
変数の値を「MongoDB Atlas 接続文字列」に置き換えます。
import static com.mongodb.client.model.Filters.eq; import org.bson.Document; import com.mongodb.client.MongoClient; import com.mongodb.client.MongoClients; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoDatabase; public class QuickStart { public static void main( String[] args ) { // Replace the placeholder with your MongoDB deployment's connection string String uri = "<connection string uri>"; try (MongoClient mongoClient = MongoClients.create(uri)) { MongoDatabase database = mongoClient.getDatabase("sample_mflix"); MongoCollection<Document> collection = database.getCollection("movies"); Document doc = collection.find(eq("title", "Back to the Future")).first(); if (doc != null) { System.out.println(doc.toJson()); } else { System.out.println("No matching documents found."); } } } }
QuickStart
クラスを実行すると、サンプル データセットから映画の詳細が出力されます。出力は次のようになります。
{ _id: ..., plot: 'A young man is accidentally sent 30 years into the past...', genres: [ 'Adventure', 'Comedy', 'Sci-Fi' ], ... title: 'Back to the Future', ... }
出力がまったくないかエラーが表示される場合は、Java クラスに適切な接続文字列が含まれているかどうか、およびサンプル データセットを MongoDB Atlas クラスターにロードしたかどうかを確認してください。
重要
TLS v1.3 を使用する場合の既知の接続の問題
アプリケーションの実行中に MongoDB インスタンスまたはクラスターへの接続時に次のようなエラーが発生した場合は、JDK を最新のパッチ リリースに更新する必要がある可能性があります。
javax.net.ssl.SSLHandshakeException: extension (5) should not be presented in certificate_request
この例外は、特定のバージョンの JDK で TLS 1.3 プロトコルを使用する場合の既知の問題ですが、次のリリースで修正されました。
JDK 11.0.7
JDK 13.0.3
JDK 14.0.2
このエラーを解決するには、JDK を以前のパッチ バージョンまたはそれ以降のバージョンに更新します。
この手順を完了すると、Java ドライバーを使用して MongoDB クラスターに接続し、サンプル データに対してクエリを実行し、結果を出力する動作するアプリケーションが作成されます。
POJOの操作(任意)
前のセクションでは、サンプル コレクションに対してクエリを実行して、マップのようなクラス Document
のデータを取得しました。このセクションでは、独自の Plain Old Java Object(POJO)を使用して MongoDB からデータを格納および取得する方法を学べます。
プロジェクトの基本パッケージ ディレクトリーに Movie.java
というファイルを作成し、次のフィールド、セッター、ゲッターを含むクラスの次のコードを追加します。
public class Movie { String plot; List<String> genres; String title; public String getPlot() { return plot; } public void setPlot(String plot) { this.plot = plot; } public List<String> getGenres() { return genres; } public void setGenres(List<String> genres) { this.genres = genres; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String toString() { return "Movie [\n plot=" + plot + ",\n genres=" + genres + ",\n title=" + title + "\n]"; } }
プロジェクト内のMovie
ファイルと同じパッケージ ディレクトリに新しいファイルQuickStartPojoExample.java
を作成します。 次のサンプル コードを使用して、 MongoDB Atlasのサンプル データセットに対してクエリを実行し、uri
変数の値を「 MongoDB Atlas接続string 」に置き換えます。 <db_password>接続 の「 」セクションを、string atlasAdmin 権限を持つユーザー用に作成したパスワードに置き換えてください。
import static com.mongodb.MongoClientSettings.getDefaultCodecRegistry; import static com.mongodb.client.model.Filters.eq; import static org.bson.codecs.configuration.CodecRegistries.fromProviders; import static org.bson.codecs.configuration.CodecRegistries.fromRegistries; import org.bson.codecs.configuration.CodecProvider; import org.bson.codecs.configuration.CodecRegistry; import org.bson.codecs.pojo.PojoCodecProvider; import com.mongodb.client.MongoClient; import com.mongodb.client.MongoClients; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoDatabase; public class QuickStartPojoExample { public static void main(String[] args) { CodecProvider pojoCodecProvider = PojoCodecProvider.builder().automatic(true).build(); CodecRegistry pojoCodecRegistry = fromRegistries(getDefaultCodecRegistry(), fromProviders(pojoCodecProvider)); // Replace the uri string with your MongoDB deployment's connection string String uri = "<connection string uri>"; try (MongoClient mongoClient = MongoClients.create(uri)) { MongoDatabase database = mongoClient.getDatabase("sample_mflix").withCodecRegistry(pojoCodecRegistry); MongoCollection<Movie> collection = database.getCollection("movies", Movie.class); Movie movie = collection.find(eq("title", "Back to the Future")).first(); System.out.println(movie); } } }
QuickStartPojoExample
クラスを実行すると、サンプル データセットから映画の詳細が出力されます。出力は次のようになります。
Movie [ plot=A young man is accidentally sent 30 years into the past..., genres=[Adventure, Comedy, Sci-Fi], title=Back to the Future ]
出力がまったくないかエラーが表示される場合は、Java クラスに適切な接続文字列が含まれているかどうか、およびサンプル データセットを MongoDB Atlas クラスターにロードしたかどうかを確認してください。
POJO を使用してデータを保存および取得する方法の詳細については、次のリンクを参照してください。
次のステップ
基礎 CRUD ガイドで Java ドライバーを使用してデータを読み取って変更する方法、または使用例から一般的な操作を実行する方法を確認できます。