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

Основные руководства по MongoDB

Дополнительные руководства по MongoDB

MongoDB Java

В этой главе мы рассмотрим, как настроить MongoDB CLIENT.

Установка

Перед тем как начать использовать MongoDB в Java-программе, необходимо убедиться, что на компьютере установлены MongoDB CLIENT и Java. Вы можете установить Java, следуя руководству по Java. Теперь давайте проверим, как настроить MongoDB CLIENT.

  • Вам нужно загрузить jar mongodb-driver-3.11.2.jar и его зависимость mongodb-driver-core-3.11.2.jar.. Убедитесь, что у вас естьlatest версии этих 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 = <скрыто>, 
   mechanismProperties = {}}

Создание коллекции

Для создания коллекции используйте метод createCollection () класса com.mongodb.client.MongoDatabase.

Ниже приведен фрагмент кода для создания коллекции

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("Успешно создана коллекция"); 
   } 
}

При компиляции,上述程序为您提供以下结果-

Успешно подключено к базе данных Успешно создана коллекция

Получение/Выбор коллекции

Для получения/выбора коллекции из базы данных необходимо использовать метод getCollection () класса com.mongodb.client.MongoDatabase.

Ниже приведен пример программы для получения/выбора коллекции

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 необходимо использовать метод insert () класса com.MongoDB.client.MongoCollection.

以下是插入文档的代码片段-

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://ru.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://ru.oldtoolbag.com/mongodb/")
		.append("by", "oldtoolbag.com");
		Document document2 = new Document("title", "RethinkDB")
		.append("description", "database")
		.append("likes", 200)
		.append("url", "http://ru.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://ru.oldtoolbag.com/mongodb/, by=oldtoolbag.com}}Document{{_id=5dce4e9ff68a9c2449e197b3, title=RethinkDB, description=database, likes=200, url=http://ru.oldtoolbag.com/rethinkdb/, by=oldtoolbag.com}}

Обновление документа

Чтобы обновить документ в集合е, пожалуйста, используйтекласс com.mongodb.client.MongoCollectionupdateOne()方法

Ниже приведен пример программы для выбора первого документа -

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://ru.oldtoolbag.com/mongodb/, by=oldtoolbag.com}}Document{{_id=5dce4e9ff68a9c2449e197b3, title=RethinkDB, description=database, likes=200, url=http://ru.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://ru.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 () и т.д. аналогична тому, что объяснено в последующих учебниках.