Java 连接 MongoDB
本文环境:JDK 13、MongoDB 4.2
话不多说,直接干
创建环境
创建Java Maven项目,然后导入下面的依赖架包,MongoDB的驱动就一个架包
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-driver</artifactId>
<version>3.12.0</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
连接类
连接类用于获取MongoDB的连接,如果需要使用到账号密码,请选择连接类中的getMongodbUserConnection方法。
import com.mongodb.MongoClient;
import com.mongodb.MongoCredential;
import com.mongodb.ServerAddress;
import com.mongodb.client.MongoDatabase;
import java.util.ArrayList;
import java.util.List;
/**
* @author Mokerson_For_TGZ
* Created by Mokerson_For_TGZ on 2020/1/22 2:45
*/
public class MongodbUtils {
/**
* 不需要账号密码验证,直接登录
* @return 返回MongoDatabase连接
*/
public static MongoDatabase getMongodbConnection() {
MongoDatabase mongoDatabase = null;
try {
// 连接到 mongodb 服务
MongoClient mongoClient = new MongoClient("localhost", 27017);
// 连接到数据库
mongoDatabase = mongoClient.getDatabase("mokerson");
System.out.println("Connect to database successfully");
} catch (Exception e) {
System.err.println(e.getClass().getName() + ": " + e.getMessage());
}
return mongoDatabase;
}
/**
* 需要账号密码进行连接
* @return 返回MongoDatabase连接
*/
public static MongoDatabase getMongodbUserConnection() {
MongoDatabase mongoDatabase = null;
try {
//连接到MongoDB服务 如果是远程连接可以替换“localhost”为服务器所在IP地址
//ServerAddress()两个参数分别为 服务器地址 和 端口
ServerAddress serverAddress = new ServerAddress("localhost", 27017);
List<ServerAddress> address = new ArrayList<>();
address.add(serverAddress);
//MongoCredential.createScramSha1Credential()三个参数分别为 用户名 数据库名称 密码
MongoCredential credential = MongoCredential.createScramSha1Credential
("username", "databaseName", "password".toCharArray());
List<MongoCredential> credentials = new ArrayList<>();
credentials.add(credential);
//通过连接认证获取MongoDB连接
MongoClient mongoClient =new MongoClient(address,credentials);
//连接到数据库
mongoDatabase = mongoClient.getDatabase("mokerson");
System.out.println("Connect to database successfully");
} catch (Exception e) {
System.err.println(e.getClass().getName() + ": " + e.getMessage());
}
return mongoDatabase;
}
}
操作类
对MongoDB中的集合与文档进行操作
import com.mokerson.mongodb.util.MongodbUtils;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.Filters;
import org.bson.Document;
import java.util.ArrayList;
import java.util.List;
/**
* @author Mokerson_For_TGZ
* Created by Mokerson_For_TGZ on 2020/1/22 3:16
*/
public class MongodbOperation {
/**
* 获取连接
*/
private static MongoDatabase mongoDatabase;
/**
* 创建并且选择集合Department
*/
private static MongoCollection<Document> collection;
static{
mongoDatabase = MongodbUtils.getMongodbConnection();
}
/**
* 文档创建并且插入
* @param collectionName 需要插入集合的名字
*/
public static void insertDocument(String collectionName){
//插入文档
// 1. 创建文档 org.bson.Document 参数为key-value的格式
// 2. 创建文档集合List<Document>
// 3. 将文档集合插入数据库集合中 mongoCollection.insertMany(List<Document>)
chooseCollection(collectionName);
Document document = new Document("title", "MongoDB").
append("description", "database").
append("likes", 100).
append("by", "Mokerson");
List<Document> documents = new ArrayList<>();
// 将文档添加到集合中
documents.add(document);
// 插入所有的文档
// 插入单个文档可以用 mongoCollection.insertOne(Document)
collection.insertMany(documents);
}
/**
* 打印给定集合中所有的数据集
* @param collectionName 集合的名字
*/
public static void getAllDocument(String collectionName){
//检索所有文档
/*
* 1. 获取迭代器FindIterable<Document>
* 2. 获取游标MongoCursor<Document>
* 3. 通过游标遍历检索出的文档集合
*/
chooseCollection(collectionName);
// 查询当前集合下所有的记录
FindIterable<Document> findIterable = collection.find();
for (Document document : findIterable) {
System.out.println(document);
}
}
/**
* 更新指定集合中文档内容
* @param collectionName 集合的名字
*/
public static void updateDocument(String collectionName){
chooseCollection(collectionName);
// 更新文档
// 将文档中的所有likes=100的文档,修改为likes=200
collection.updateMany(Filters.eq("likes", 100), new Document("$set",new Document("likes",200)));
// 更新后查看内容
MongodbOperation.getAllDocument(collectionName);
}
public static void deleteDocument(String collectionName){
chooseCollection(collectionName);
//删除符合条件的第一个文档
collection.deleteOne(Filters.eq("likes", 200));
//删除所有符合条件的文档
collection.deleteMany (Filters.eq("likes", 200));
// 删除后查看结果
MongodbOperation.getAllDocument(collectionName);
}
/**
* 获取集合
* @param collectionName 集合的名字
*/
private static void chooseCollection(String collectionName) {
// 集合选择
collection = mongoDatabase.getCollection(collectionName);
}
/**
* 创建集合
* @param collectionName 集合的名字
*/
public static void createCollection(String collectionName) {
// 集合创建
mongoDatabase.createCollection(collectionName);
}
}
测试类
用于测试之前的代码是否正确
import com.mokerson.mongodb.conllection.MongodbOperation;
import org.junit.Test;
/**
* @author Mokerson_For_TGZ
* Created by Mokerson_For_TGZ on 2020/1/22 3:34
*/
public class MongodbTest {
@Test
public void testMongodb(){
// 创建集合
MongodbOperation.createCollection("university");
// 插入文档
MongodbOperation.insertDocument("university");
// 修改文档
MongodbOperation.updateDocument("university");
// 删除文档
MongodbOperation.deleteDocument("university");
}
}