本篇博客,为大家带来在IDEA上通过Java代码实现Mongodb的CRUD操作!
一.连接数据库
连接数据库一共有两种方法,分别为不通过认证获取连接数据库对象与需要密码认证方式连接两种方式。因为对Mongodb数据库的每一步操作都需要先连接数据库,建议把连接数据库的操作封装到一个工具类方便后续的使用!
代码语言:javascript复制package com.czxy.mongodb;
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;
/**
* @Auther: Alice菌
* @Date: 2020/3/6 19:41
* @Description: 流年笑掷 未来可期。以梦为马,不负韶华!
*/
// mongodb 连接数据库工具类
public class MongoDBUtil {
// 不通过认证获取连接数据库对象
public static MongoDatabase getConnect1(){
// 连接到 mongodb 服务
MongoClient mongoClient = new MongoClient("localhost", 27017);
// 连接到数据库
MongoDatabase mongoDatabase = mongoClient.getDatabase("demo0304");
// 返回连接数据库对象
return mongoDatabase;
}
// 需要密码认证方式连接
public static MongoDatabase getConnect2(){
List<ServerAddress> adds = new ArrayList<>();
//ServerAddress()两个参数分别为 服务器地址 和 端口
ServerAddress serverAddress = new ServerAddress("localhost", 27017);
adds.add(serverAddress);
List<MongoCredential> credentials = new ArrayList<>();
//MongoCredential.createScramSha1Credential()三个参数分别为 用户名 数据库名称 密码
MongoCredential mongoCredential = MongoCredential.createScramSha1Credential("root", "demo0304", "root".toCharArray());
credentials.add(mongoCredential);
//通过连接认证获取MongoDB连接
MongoClient mongoClient = new MongoClient(adds, credentials);
//连接到数据库
MongoDatabase mongoDatabase = mongoClient.getDatabase("demo0304");
//返回连接数据库对象
return mongoDatabase;
}
}
二.插入文档
<1>插入一个文档
代码语言:javascript复制/**
* 插入一个文档(对应于关系型数据库表中的一行)
*/
@Test
public void insertOneTest(){
// 获取数据库连接对象
MongoDatabase mongoDatabase = MongoDBUtil.getConnect1();
// 获取集合
MongoCollection<Document> collection = mongoDatabase.getCollection("table_01");
// 创建文档对象<要插入的数据>
Document document = new Document("name", "张三")
.append("sex","男")
.append("age",18);
// 插入一个文档
collection.insertOne(document);
}
<2>插入多个文档
代码语言:javascript复制/**
* 插入多个文档
*/
@Test
public void insertManyTest(){
// 获取数据库连接对象
MongoDatabase mongoDatabase = MongoDBUtil.getConnect1();
// 获取集合
MongoCollection<Document> collection = mongoDatabase.getCollection("table_01");
// 要插入的数据
List<Document> list = new ArrayList<>();
for (int i = 1; i <= 3 ; i ) {
Document document = new Document("name", "张三")
.append("sex","男")
.append("age",18);
list.add(document);
}
// 插入多个文档
collection.insertMany(list);
}
三.删除文档
<1>删除与筛选器匹配的单个文档
代码语言:javascript复制/**
* 删除与筛选器匹配的单个文档
*/
@Test
public void deleteOneTest(){
// 获取数据库连接对象
MongoDatabase mongoDatabase = MongoDBUtil.getConnect1();
// 获取集合
MongoCollection<Document> collection = mongoDatabase.getCollection("table_01");
//申明删除条件
Bson filter = Filters.eq("age",18);
//删除与筛选器匹配的单个文档
collection.deleteOne(filter);
}
<2>删除与筛选器匹配的所有文档
代码语言:javascript复制 /**
* 删除与筛选器匹配的所有文档
*/
@Test
public void deleteManyTest(){
//获取数据库连接对象
MongoDatabase mongoDatabase = MongoDBUtil.getConnect1();
//获取集合
MongoCollection<Document> collection = mongoDatabase.getCollection("table_01");
//申明删除条件
Bson filter = Filters.eq("age",18);
//删除与筛选器匹配的所有文档
collection.deleteMany(filter);
}
四.修改文档
<1>修改单个文档
代码语言:javascript复制 /**
* 修改单个文档
*/
@Test
public void updateOneTest(){
//获取数据库连接对象
MongoDatabase mongoDatabase = MongoDBUtil.getConnect1();
//获取集合
MongoCollection<Document> collection = mongoDatabase.getCollection("table_01");
//修改过滤器
Bson filter = Filters.eq("name", "张三");
//指定修改的更新文档
Document document = new Document("$set", new Document("age", 100));
//修改单个文档
collection.updateOne(filter, document);
}
<2>修改多个文档
代码语言:javascript复制 /**
* 修改多个文档
*/
@Test
public void updateManyTest(){
//获取数据库连接对象
MongoDatabase mongoDatabase = MongoDBUtil.getConnect2();
//获取集合
MongoCollection<Document> collection = mongoDatabase.getCollection("table_01");
//修改过滤器
Bson filter = Filters.eq("name", "张三");
//指定修改的更新文档
Document document = new Document("$set", new Document("age", 100));
//修改单个文档
collection.updateMany(filter, document);
}
五.查询文档
<1>查询所有
代码语言:javascript复制 /**
* 查询集合中的所有文档
*/
@Test
public void findTest(){
//获取数据库连接对象
MongoDatabase mongoDatabase = MongoDBUtil.getConnect1();
//获取集合
MongoCollection<Document> collection = mongoDatabase.getCollection("table_01");
//查找集合中的所有文档
FindIterable findIterable = collection.find();
MongoCursor cursor = findIterable.iterator();
while (cursor.hasNext()) {
System.out.println(cursor.next());
}
}
<2>查询第一个文档
代码语言:javascript复制 /**
* 查询到的第一个文档
*/
@Test
public void findFirstTest(){
//获取数据库连接对象
MongoDatabase mongoDatabase = MongoDBUtil.getConnect1();
//获取集合
MongoCollection<Document> collection = mongoDatabase.getCollection("table_01");
//查找集合中的所有文档
FindIterable findIterable = collection.find();
//取出查询到的第一个文档
Document document = (Document) findIterable.first();
//打印输出
System.out.println(document);
}
<3>指定过滤器查询
代码语言:javascript复制 /**
* 指定查询过滤器查询
*/
@Test
public void FilterfindTest(){
//获取数据库连接对象
MongoDatabase mongoDatabase = MongoDBUtil.getConnect1();
//获取集合
MongoCollection<Document> collection = mongoDatabase.getCollection("table_01");
//指定查询过滤器
Bson filter = Filters.eq("name", "张三");
//指定查询过滤器查询
FindIterable findIterable = collection.find(filter);
MongoCursor cursor = findIterable.iterator();
//迭代器遍历
while (cursor.hasNext()) {
System.out.println(cursor.next());
}
}
上述的所有代码博主亲测,都能成功运行,小伙伴们大可不必担心。
本次的记录分享就到这里,受益的朋友不妨点个赞支持一下~