上一篇主要讲了MongoDB数据的介绍,还有MongoDB数据库的安装和配置。经常有项目中会需要连接MongoDB数据库并操作数据库进行增删改查,本文主要讲在Java中怎么操作MongoDB数据库进行增删改查。
Java操作MongoDB
1)Java操作MongoDB需要第三方驱动程序,Maven项目可以在pom.xml文件加入依赖
org.mongodb
mongo-java-driver
3.0.4
2)非Maven项目可以下载驱动程序jar包,导入项目buildBath路径。
代码实现
import com.mongodb.MongoClient;
import com.mongodb.MongoCredential;
import com.mongodb.ServerAddress;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.Filters;
import org.bson.Document;
import org.bson.conversions.Bson;
import java.util.ArrayList;
import java.util.List;
public class MongoUtil {
//不通过认证获取连接数据库对象
public static MongoDatabase getConnect() {
//连接到 mongodb 服务
MongoClient mongoClient = new MongoClient("localhost", 27017);
//连接到数据库
MongoDatabase mongoDatabase = mongoClient.getDatabase("test");
//返回连接数据库对象
return mongoDatabase;
}
//需要密码认证方式连接
public static MongoDatabase getConnect2() {
List adds = new ArrayList<>();
//ServerAddress()两个参数分别为 服务器地址 和 端口
ServerAddress serverAddress = new ServerAddress("localhost", 27017);
adds.add(serverAddress);
List credentials = new ArrayList<>();
//MongoCredential.createScramSha1Credential()三个参数分别为 用户名 数据库名称 密码
MongoCredential mongoCredential = MongoCredential.createScramSha1Credential("username", "databaseName", "password".toCharArray());
credentials.add(mongoCredential);
//通过连接认证获取MongoDB连接
MongoClient mongoClient = new MongoClient(adds, credentials);
//连接到数据库
MongoDatabase mongoDatabase =
mongoClient.getDatabase("test");
//返回连接数据库对象
return mongoDatabase;
}
/**
* 插入一个文档
*/
public void insertOne() {
//获取数据库连接对象
MongoDatabase mongoDatabase = MongoUtil.getConnect();
//获取集合
MongoCollection collection = mongoDatabase.getCollection("user");
//要插入的数据
Document document = new Document("name", "张三").append("sex", "男").append("age", 18);
//插入一个文档
collection.insertOne(document);
}
/**
* 插入多个文档
*/
public void insertMany() {
//获取数据库连接对象
MongoDatabase mongoDatabase = MongoUtil.getConnect();
//获取集合
MongoCollection collection = mongoDatabase.getCollection("user");
//要插入的数据
List 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);
}
/**
* 删除一个文档
*/
public void deleteOne() {
//获取数据库连接对象
MongoDatabase mongoDatabase = MongoUtil.getConnect();
//获取集合
MongoCollection collection = mongoDatabase.getCollection("user");
//申明删除条件
Bson filter = Filters.eq("age", 18);
//删除与筛选器匹配的单个文档
collection.deleteOne(filter);
}
/**
* 删除多个文档
*/
public void deleteMany() {
//获取数据库连接对象
MongoDatabase mongoDatabase = MongoUtil.getConnect();
//获取集合
MongoCollection collection = mongoDatabase.getCollection("user");
//申明删除条件
Bson filter = Filters.eq("age", 18);
//删除与筛选器匹配的所有文档
collection.deleteMany(filter);
}
/**
* 修改一个文档
*/
public void updateOne() {
//获取数据库连接对象
MongoDatabase mongoDatabase = MongoUtil.getConnect();
//获取集合
MongoCollection collection = mongoDatabase.getCollection("user");
//修改过滤器
Bson filter = Filters.eq("name", "张三");
//指定修改的更新文档
Document document = new Document("$set", new Document("age", 100));
//修改单个文档
collection.updateOne(filter, document);
}
/**
* 修改多个文档
*/
public void updateMany() {
//获取数据库连接对象
MongoDatabase mongoDatabase = MongoUtil.getConnect();
//获取集合
MongoCollection collection = mongoDatabase.getCollection("user");
//修改过滤器
Bson filter = Filters.eq("name", "张三");
//指定修改的更新文档
Document document = new Document("$set", new Document("age", 100));
//修改多个文档
collection.updateMany(filter, document);
}
/**
* 查询所有文档
*/
public void find() {
//获取数据库连接对象
MongoDatabase mongoDatabase = MongoUtil.getConnect();
//获取集合
MongoCollection collection = mongoDatabase.getCollection("user");
//查找集合中的所有文档
FindIterable findIterable = collection.find();
MongoCursor cursor = findIterable.iterator();
while (cursor.hasNext()) {
System.out.println(cursor.next());
}
}
/**
* 通过过滤器查询
*/
public void Filterfind() {
//获取数据库连接对象
MongoDatabase mongoDatabase = MongoUtil.getConnect();
//获取集合
MongoCollection collection = mongoDatabase.getCollection("user");
//指定查询过滤器
Bson filter = Filters.eq("name", "张三");
//指定查询过滤器查询
FindIterable findIterable = collection.find(filter);
MongoCursor cursor = findIterable.iterator();
while (cursor.hasNext()) {
System.out.println(cursor.next());
}
}
/**
* 查询第一个文件
*/
public void findfirst() {
//获取数据库连接对象
MongoDatabase mongoDatabase = MongoUtil.getConnect();
//获取集合
MongoCollection collection = mongoDatabase.getCollection("user");
//查找集合中的所有文档
FindIterable findIterable = collection.find();
//取出查询到的第一个文档
Document document = (Document) findIterable.first();
//打印输出
System.out.println(document);
}
}