English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

MongoDBJava

本章では、MongoDB CLIENTの設定方法を学びます。

インストール

JavaプログラムでMongoDBを使用し始める前に、コンピュータ上にMongoDB CLIENTとJavaが設定されていることを確認する必要があります。Javaのチュートリアルに従ってコンピュータにJavaをインストールできます。今、MongoDB CLIENTの設定方法を確認しましょう。

  • jarをダウンロードする必要があります。 mongodb-driver-3.11.2.jarおよび依存関係mongodb-driver-core-3.11.2.jar.これらのjarファイルの最新バージョンをダウンロードしてください。

  • ダウンロードしたjarファイルをクラスパスに含める必要があります。

データベースに接続する

データベースに接続するには、データベース名を指定する必要があります。データベースが存在しない場合、MongoDBは自動的に作成します。

以下にデータベースに接続するコードスニペットがあります-

import com.mongodb.client.MongoDatabase; 
import com.mongodb.MongoClient; 
import com.mongodb.MongoCredential;  
public class ConnectToDB { 
   
   public static void main(String args[]) {  
      
      // Mongoクライアントの作成 
      MongoClient mongo = new MongoClient("localhost", 27017 ); 
   
      // 証明書の作成 
      MongoCredential credential; 
      credential = MongoCredential.createCredential("sampleUser", "myDb", 
         "password".toCharArray()); 
      System.out.println("データベースに成功して接続しました");  
      
      // データベースにアクセス 
      MongoDatabase database = mongo.getDatabase("myDb"); 
      System.out.println("Credentials ::"+ credential);     
   } 
}

今、上記のプログラムをコンパイルして実行し、myDbデータベースを作成します。

$javac ConnectToDB.java $java ConnectToDB

実行後、上記のプログラムは以下の出力を提供します。

データベースに成功して接続しました Credentials ::MongoCredential{
   mechanism = null, 
   userName = 'sampleUser', 
   source = 'myDb', 
   password = <hidden>, 
   mechanismProperties = {}

コレクションの作成

コレクションを作成するには、com.mongodb.client.MongoDatabase クラスの createCollection ()メソッドを使用します。

以下にコレクションを作成するコードスニペットがあります-

import com.mongodb.client.MongoDatabase; 
import com.mongodb.MongoClient; 
import com.mongodb.MongoCredential;  
public class CreatingCollection { 
   
   public static void main(String args[]) {  
      
      // Mongoクライアントの作成 
      MongoClient mongo = new MongoClient("localhost", 27017 ); 
     
      // 証明書の作成 
      MongoCredential credential; 
      credential = MongoCredential.createCredential("sampleUser", "myDb", 
         "password".toCharArray()); 
      System.out.println("データベースに成功して接続しました");  
      
      //データベースにアクセス 
      MongoDatabase database = mongo.getDatabase("myDb");  
      
      //コレクションの作成 
      database.createCollection("sampleCollection"); 
      System.out.println("コレクションが成功して作成されました"); 
   } 
}

コンパイル時、以下の結果が提供されます-

データベースに成功して接続しました コレクションが成功して作成されました

取得する/コレクションを選択する

データベースから取得する/コレクションを選択するには、com.mongodb.client.MongoDatabase クラスの getCollection ()メソッドを使用する必要があります。

以下に取得/コレクションを選択するプログラム-

import com.mongodb.client.MongoCollection; 
import com.mongodb.client.MongoDatabase; 
import org.bson.Document; 
import com.mongodb.MongoClient; 
import com.mongodb.MongoCredential;  
public class selectingCollection { 
   
   public static void main(String args[]) {  
      
      // Mongoクライアントの作成 
      MongoClient mongo = new MongoClient("localhost", 27017 ); 
     
      // 証明書の作成 
      MongoCredential credential; 
      credential = MongoCredential.createCredential("sampleUser", "myDb", 
         "password".toCharArray()); 
      System.out.println("データベースに成功して接続しました");  
      
      // データベースにアクセス 
      MongoDatabase database = mongo.getDatabase("myDb");  
      
      // コレクションの作成
      System.out.println("コレクションが成功して作成されました"); 
      // コレクションの取得
      MongoCollection<Document> collection = database.getCollection("myCollection"); 
      System.out.println("コレクションmyCollectionを選択成功しました"); 
   }
}

コンパイル時、以下の結果が提供されます-

データベースに成功して接続しました コレクションが成功して作成されました コレクションmyCollectionが成功して選択されました

ドキュメントを挿入する

MongoDB にドキュメントを挿入するには、com.MongoDB.client.MongoCollection クラスの insert ()メソッドを使用する必要があります。

以下はドキュメントを挿入するコードスニペットです-

import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import org.bson.Document;
import com.mongodb.MongoClient;
public class InsertingDocument {
	public static void main(String args[]) {
	// Mongoクライアントの作成
	MongoClient mongo = new MongoClient("localhost", 27017 );
	// データベースにアクセス
	MongoDatabase database = mongo.getDatabase("myDb");
	// コレクションの作成
	database.createCollection("sampleCollection");
	System.out.println("コレクションが成功して作成されました");
	// コレクションの取得
	MongoCollection<Document> collection = database.getCollection("sampleCollection");
	System.out.println("サンプルコレクションsampleCollectionを選択成功しました");
	Document document = new Document("title", "MongoDB")
	.append("description", "database")
	.append("likes", 100)
	.append("url", "http://ja.oldtoolbag.com/mongodb/")
	.append("by", "oldtoolbag.com");
	//ドキュメントをコレクションに挿入します
	collection.insertOne(document);
	System.out.println("ドキュメントの挿入に成功しました");
}

コンパイル時、以下の結果が提供されます-

データベースに成功して接続しました 成功してコレクションsampleCollectionに選択しました ドキュメントの挿入に成功しました

すべてのドキュメントの検索

コレクションからすべてのドキュメントを選択するには、使用してくださいcom.mongodb.client.MongoCollection のclassfind()メソッド。このメソッドはカーソルを返しますので、カーソルを反復します。

以下はすべてのドキュメントを選択するプログラムです-

import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.bson.Document;
import com.mongodb.MongoClient;
import com.mongodb.MongoCredential;
public class RetrievingAllDocuments {
	public static void main(String args[]) {
		// Mongoクライアントの作成
		MongoClient mongo = new MongoClient("localhost", 27017 );
		// 証明書の作成
		MongoCredential credential;
		credential = MongoCredential.createCredential("sampleUser", "myDb", "password".toCharArray());
		System.out.println("データベースに成功して接続しました");
		// データベースにアクセス
		MongoDatabase database = mongo.getDatabase("myDb");
		// コレクションの取得
		MongoCollection<Document> collection = database.getCollection("sampleCollection");
		System.out.println("サンプルコレクションsampleCollectionを選択成功しました");
		Document document1 = new Document("title", "MongoDB")
		.append("description", "database")
		.append("likes", 100)
		.append("url", "http://ja.oldtoolbag.com/mongodb/")
		.append("by", "oldtoolbag.com");
		Document document2 = new Document("title", "RethinkDB")
		.append("description", "database")
		.append("likes", 200)
		.append("url", "http://ja.oldtoolbag.com/rethinkdb/")
		.append("by", "oldtoolbag.com");
		List<Document> list = new ArrayList<Document>();
		list.add(document1);
		list.add(document2);
		collection.insertMany(list);
		// イテレーション可能なオブジェクトを取得
		FindIterable<Document> iterDoc = collection.find();
		int i = 1;
		// イテレータを取得
		Iterator it = iterDoc.iterator();
		while (it.hasNext()) {
			System.out.println(it.next());
			i++;
		}
	}
}

コンパイル時、以下の結果が提供されます-

データベースに成功して接続しました 成功してコレクションsampleCollection{{_id=5dce4e9ff68a9c2449e197b2, title=MongoDB, description=database, likes=100, url=http://ja.oldtoolbag.com/mongodb/, by=oldtoolbag.com}}Document{{_id=5dce4e9ff68a9c2449e197b3, title=RethinkDB, description=database, likes=200, url=http://ja.oldtoolbag.com/rethinkdb/, by=oldtoolbag.com}}

ドキュメントの更新

コレクションからドキュメントを更新するには、使用してくださいcom.mongodb.client.MongoCollectionのclassupdateOne()メソッド

以下は最初のドキュメントを選択するプログラムです-

import com.mongodb.client.FindIterable; 
import com.mongodb.client.MongoCollection; 
import com.mongodb.client.MongoDatabase; 
import com.mongodb.client.model.Filters; 
import com.mongodb.client.model.Updates; 
import java.util.Iterator; 
import org.bson.Document;  
import com.mongodb.MongoClient; 
import com.mongodb.MongoCredential;  
public class UpdatingDocuments { 
   
   public static void main(String args[]) {  
      
      // Mongoクライアントの作成 
      MongoClient mongo = new MongoClient("localhost", 27017 ); 
     
      // 証明書の作成 
      MongoCredential credential; 
      credential = MongoCredential.createCredential("sampleUser", "myDb", 
         "password".toCharArray()); 
      System.out.println("データベースに成功して接続しました");  
      
      // データベースにアクセス 
      MongoDatabase database = mongo.getDatabase("myDb"); 
      // コレクションの取得 
      MongoCollection<Document> collection = database.getCollection("sampleCollection");
      System.out.println("コレクションmyCollectionを選択成功しました"); 
      collection.updateOne(Filters.eq("title", 1), Updates.set("likes", 150));       
      System.out.println("ドキュメント更新成功...");  
      
      // 更新後のドキュメントを検索 
      // イテレーション可能なオブジェクトを取得
      FindIterable<Document> iterDoc = collection.find(); 
      int i = 1; 
      // イテレータを取得 
      Iterator it = iterDoc.iterator(); 
      while (it.hasNext()) {  
         System.out.println(it.next());  
         i++; 
      }     
   }  
}

コンパイル時、以下の結果が提供されます-

データベースに接続成功しました コレクションmyCollectionを選択成功しました ドキュメント更新成功...Document{{_id=5dce4e9ff68a9c2449e197b2, title=MongoDB, description=database, likes=100, url=http://ja.oldtoolbag.com/mongodb/, by=oldtoolbag.com}}Document{{_id=5dce4e9ff68a9c2449e197b3, title=RethinkDB, description=database, likes=200, url=http://ja.oldtoolbag.com/rethinkdb/, by=oldtoolbag.com}}

ドキュメントの削除

コレクションからドキュメントを削除するには、以下のクラスを使用する必要がありますcom.mongodb.client.MongoCollectiondeleteOne()メソッド。

以下はドキュメントの削除プログラムです-

import com.mongodb.client.FindIterable; 
import com.mongodb.client.MongoCollection; 
import com.mongodb.client.MongoDatabase; 
import com.mongodb.client.model.Filters;  
import java.util.Iterator; 
import org.bson.Document; 
import com.mongodb.MongoClient; 
import com.mongodb.MongoCredential;  
public class DeletingDocuments { 
   
   public static void main(String args[]) {  
   
      // Mongoクライアントの作成 
      MongoClient mongo = new MongoClient("localhost", 27017 );
      
      // 証明書の作成 
      MongoCredential credential; 
      credential = MongoCredential.createCredential("sampleUser", "myDb", 
         "password".toCharArray()); 
      System.out.println("データベースに成功して接続しました");  
      
      // データベースにアクセス 
      MongoDatabase database = mongo.getDatabase("myDb"); 
      // コレクションの取得
      MongoCollection<Document> collection = database.getCollection("sampleCollection");
      System.out.println("サンプルコレクションsampleCollectionを選択成功しました"); 
      // ファイルを削除 
      collection.deleteOne(Filters.eq("title", "MongoDB")); 
      System.out.println("ドキュメント削除成功...");  
      
      // 更新後のドキュメントを検索 
      // イテレーション可能なオブジェクトを取得 
      FindIterable<Document> iterDoc = collection.find(); 
      int i = 1; 
      // イテレータを取得 
      Iterator it = iterDoc.iterator(); 
      while (it.hasNext()) {  
         System.out.println(it.next());  
         i++; 
      }       
   } 
}

コンパイル時、以下の結果が提供されます-

データベースに接続成功しました サンプルコレクションsampleCollectionを選択成功しました ドキュメント削除成功...Document{{_id=5dce4e9ff68a9c2449e197b3, title=RethinkDB, description=database, likes=200, url=http://ja.oldtoolbag.com/rethinkdb/, by=oldtoolbag.com}}

コレクションの削除

データベースからコレクションを削除するには、以下のクラスを使用しますcom.mongodb.client.MongoCollectiondrop()メソッド。

以下はコレクションの削除を行うプログラムです-

import com.mongodb.client.MongoCollection; 
import com.mongodb.client.MongoDatabase;  
import org.bson.Document;  
import com.mongodb.MongoClient; 
import com.mongodb.MongoCredential;  
public class DropingCollection { 
   
   public static void main(String args[]) {  
      // Mongoクライアントの作成 
      MongoClient mongo = new MongoClient("localhost", 27017 ); 
      // 証明書の作成 
      MongoCredential credential; 
      credential = MongoCredential.createCredential("sampleUser", "myDb", 
         "password".toCharArray()); 
      System.out.println("データベースに成功して接続しました");  
      
      // データベースにアクセス 
      MongoDatabase database = mongo.getDatabase("myDb");  
      
      // コレクションの作成
      System.out.println("コレクションが成功して作成されました"); 
      // コレクションの取得
      MongoCollection<Document> collection = database.getCollection("sampleCollection");
      // コレクションの削除 
      collection.drop(); 
      System.out.println("コレクションが成功して削除されました");
   } 
}

コンパイル時、以下の結果が提供されます-

データベースに成功して接続しました Collection sampleCollection selected successfully コレクションが成功して削除されました

すべてのコレクションをリストアップ

データベース内のすべてのコレクションをリストアップするには、以下のクラスを使用しますcom.mongodb.client.MongoDatabaseのlistCollectionNames()メソッド

以下はデータベースのすべてのコレクションをリストアップするプログラムです-

import com.mongodb.client.MongoDatabase; 
import com.mongodb.MongoClient; 
import com.mongodb.MongoCredential;  
public class ListOfCollection { 
   
   public static void main(String args[]) {  
      
      // Mongoクライアントの作成 
      MongoClient mongo = new MongoClient("localhost", 27017 ); 
      // 証明書の作成 
      MongoCredential credential; 
      credential = MongoCredential.createCredential("sampleUser", "myDb", 
         "password".toCharArray()); 
      System.out.println("データベースに成功して接続しました");  
      
      // データベースにアクセス 
      MongoDatabase database = mongo.getDatabase("myDb"); 
      System.out.println("コレクションが成功して作成されました"); 
      for (String name : database.listCollectionNames()) { 
         System.out.println(name); 
      } 
   }
}

コンパイル時、以下の結果が提供されます-

データベースに成功して接続しました コレクションが成功して作成されました myCollection myCollection1 myCollection5

その他のMongoDBメソッドsave()、limit()、skip()、sort()などは、後のチュートリアルで説明します。