Java操作Mongo数据库增删改查工具类MongoDBUtil
1.Maven引用
<!-- https://mvnrepository.com/artifact/org.mongodb/mongo-java-driver -->
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>3.12.11</version>
</dependency>
数据配置文件db-java.properties
# mongo MONGO_SERVER=10.1.1.196:27017 MONGO_PROXY=10.1.1.74:29019 MONGO_DB=aoe_mongo MONGO_USER=hmf MONGO_SECRET=lianshi MONGO_COLL=autotest
3.Java调用Mongo工具类
3.2连接数据库
public MongoDBUtils(){
String configFile="db-java.properties";
PropertiesUtil pro= new PropertiesUtil(configFile);
mongoServer = pro.readProperty("MONGO_SERVER");
dbName = pro.readProperty("MONGO_DB");
dbUser = pro.readProperty("MONGO_USER");
dbSecret = pro.readProperty("MONGO_SECRET");
coll = pro.readProperty("MONGO_COLL");
}
/**
* 连接Mongo数据库
*/
public void MongoConnect(){
MongoConnect(null);
}
/**
* 连接Mongo数据库代理
//* @param aoeString 如果输入非空,那么是连接proxy
*/
public void MongoConnect(String aoeString){
List<ServerAddress> addressList=new ArrayList<>();
ServerAddress address = new ServerAddress(mongoServer);
/* if (aoeString !=null) {
address = new ServerAddress(aoeServer);
}*/
addressList.add(address);
MongoCredential credential=MongoCredential.createCredential(dbUser, dbName, dbSecret.toCharArray());
mongoClient = MongoClients.create(
MongoClientSettings.builder()
.applyToClusterSettings(builder -> builder.hosts(addressList))
.credential(credential)
.build());
log.info("Connect to database successfully,mongoDatabase:"+dbName );
}
3.2、插入数据
/**
* 插入文档数据
* @param column_aa 字段
* @param value_aa 值
*/
public void insert(String[] column_aa, String[] value_aa){
MongoDatabase mongoDb=mongoClient.getDatabase(dbName);
MongoCollection<Document> dbColl= mongoDb.getCollection(coll);
Document document = new Document();
for(int i=0;i<column_aa.length;i++){
if(column_aa.length == value_aa.length){
document.append(column_aa[i], value_aa[i]);
}
}
dbColl.insertOne(document);
log.info("插入文档: "+document);
}
3.3、按条件查询文档
/**
* 按条件查询文档数据
* @param name 字段
* @param value 值
*/
public void FilterQuery(String name,String value){
boolean flag=false;
MongoDatabase mongoDb=mongoClient.getDatabase(dbName);
MongoCollection<Document> dbColl= mongoDb.getCollection(coll);
//过滤器
Bson regex = Filters.regex(name,value);
//Bson regex = Filters.eq(name,value); //eq是直接匹配,regex是正则匹配(^代表匹配开头,&代表匹配末尾)
FindIterable<Document> find = dbColl.find(regex);
for (Document document : find) {
log.info("FilterQuery查询结果: "+document);
}
}
3.4、查询所有文档
/**
* 查询所有文档数据
*/
public List<AoeData> query(){
MongoDatabase mongoDb=mongoClient.getDatabase(dbName);
MongoCollection<Document> dbColl= mongoDb.getCollection(coll);
List<AoeData> datalist=new ArrayList<>();
AoeData data=new AoeData();
MongoCursor<Document> mongoCursor = dbColl.find().iterator();
if(mongoCursor.hasNext()){
Document doc =mongoCursor.next();
log.info("查询文档: "+doc);
data.setAoeId(Integer.parseInt(doc.getString("aoeId")));
data.setAoeAes(doc.getString("aoeAes"));
data.setAoeSm4(doc.getString("aoeSm4"));
data.setAoeSm4_a(doc.getString("aoeSm4_a"));
data.setAoeEmail(doc.getString("aoeEmail"));
data.setAoePhone(doc.getString("aoePhone"));
data.setAoeIdCard(doc.getString("aoeIdCard"));
data.setAoeOfficerCard(doc.getString("aoeOfficerCard"));
data.setAoePassport(doc.getString("aoePassport"));
data.setAoeGeneralIdCard(doc.getString("aoeGeneralIdCard"));
data.setAoeCreditCard(doc.getString("aoeCreditCard"));
data.setAoePosition(doc.getString("aoePosition"));
datalist.add(data);
}
return datalist;
}
3.5、按条件删除文档
/**
* 删除文档数据
* @param name 字段
* @param value 值
*/
public void removeData(String name,String value) {
MongoDatabase mongoDb=mongoClient.getDatabase(dbName);
MongoCollection<Document> dbColl= mongoDb.getCollection(coll);
//dbColl.deleteMany(Filters.eq("aoeAes", "吴秀梅"));
DeleteResult deleteResult=dbColl.deleteMany(Filters.regex(name, value));
log.info("删除文档结果: "+deleteResult);
if(deleteResult.getDeletedCount()>0){
log.info("删除文档成功,删除数量:"+deleteResult.getDeletedCount());
}
}
3.6、按条件更新文档
/**
* 更新文档数据
* @param name 字段
* @param value 值
*/
public void updateData(String name,String value,String name2,String updateValue) {
MongoDatabase mongoDb=mongoClient.getDatabase(dbName);
MongoCollection<Document> dbColl= mongoDb.getCollection(coll);
//过滤器
Bson filter = Filters.eq(name,value); //eq是直接匹配,regex是正则匹配(^代表匹配开头,&代表匹配末尾)
//指定修改的更新文档
Document document = new Document("$set", new Document(name2, updateValue));
dbColl.updateOne(filter,document);
}
3.7关闭连接对象
/**
* 关闭连接对象
*/
public void close(){
if(mongoClient != null){
mongoClient.close();
}
mongoClient = null;
}
3.9、整体工具类:
package mongo;
import bean.AoeData;
import com.mongodb.MongoClientSettings;
import com.mongodb.MongoCredential;
import com.mongodb.ServerAddress;
import com.mongodb.client.*;
import com.mongodb.client.model.Filters;
import com.mongodb.client.result.DeleteResult;
import org.bson.Document;
import org.bson.conversions.Bson;
import org.elasticsearch.action.delete.DeleteRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import utils.MongoDBUtil;
import utils.PropertiesUtil;
import java.util.ArrayList;
import java.util.List;
/**
* @author : HMF
* @Description :
* @Date : Created in 15:14 2022/9/26
*/
public class MongoDBUtils {
protected static Logger log = LoggerFactory.getLogger(MongoDBUtils.class);
private String mongoServer;
private String aoeServer;
private String dbName;
private String dbUser;
private String dbSecret;
public String coll;
private static MongoClient mongoClient;
public MongoDBUtils(){
String configFile="db-java.properties";
PropertiesUtil pro= new PropertiesUtil(configFile);
mongoServer = pro.readProperty("MONGO_SERVER");
dbName = pro.readProperty("MONGO_DB");
dbUser = pro.readProperty("MONGO_USER");
dbSecret = pro.readProperty("MONGO_SECRET");
coll = pro.readProperty("MONGO_COLL");
}
/**
* 连接Mongo数据库
*/
public void MongoConnect(){
MongoConnect(null);
}
/**
* 连接Mongo数据库代理
//* @param aoeString 如果输入非空,那么是连接proxy
*/
public void MongoConnect(String aoeString){
List<ServerAddress> addressList=new ArrayList<>();
ServerAddress address = new ServerAddress(mongoServer);
/* if (aoeString !=null) {
address = new ServerAddress(aoeServer);
}*/
addressList.add(address);
MongoCredential credential=MongoCredential.createCredential(dbUser, dbName, dbSecret.toCharArray());
mongoClient = MongoClients.create(
MongoClientSettings.builder()
.applyToClusterSettings(builder -> builder.hosts(addressList))
.credential(credential)
.build());
log.info("Connect to database successfully,mongoDatabase:"+dbName );
}
/**
* 插入文档数据
* @param column_aa 字段
* @param value_aa 值
*/
public void insert(String[] column_aa, String[] value_aa){
MongoDatabase mongoDb=mongoClient.getDatabase(dbName);
MongoCollection<Document> dbColl= mongoDb.getCollection(coll);
Document document = new Document();
for(int i=0;i<column_aa.length;i++){
if(column_aa.length == value_aa.length){
document.append(column_aa[i], value_aa[i]);
}
}
dbColl.insertOne(document);
log.info("插入文档: "+document);
}
/**
* 查询所有文档数据
*/
public List<AoeData> query(){
MongoDatabase mongoDb=mongoClient.getDatabase(dbName);
MongoCollection<Document> dbColl= mongoDb.getCollection(coll);
List<AoeData> datalist=new ArrayList<>();
AoeData data=new AoeData();
MongoCursor<Document> mongoCursor = dbColl.find().iterator();
if(mongoCursor.hasNext()){
Document doc =mongoCursor.next();
log.info("查询文档: "+doc);
data.setAoeId(Integer.parseInt(doc.getString("aoeId")));
data.setAoeAes(doc.getString("aoeAes"));
data.setAoeSm4(doc.getString("aoeSm4"));
data.setAoeSm4_a(doc.getString("aoeSm4_a"));
data.setAoeEmail(doc.getString("aoeEmail"));
data.setAoePhone(doc.getString("aoePhone"));
data.setAoeIdCard(doc.getString("aoeIdCard"));
data.setAoeOfficerCard(doc.getString("aoeOfficerCard"));
data.setAoePassport(doc.getString("aoePassport"));
data.setAoeGeneralIdCard(doc.getString("aoeGeneralIdCard"));
data.setAoeCreditCard(doc.getString("aoeCreditCard"));
data.setAoePosition(doc.getString("aoePosition"));
datalist.add(data);
}
return datalist;
}
/**
* 按条件查询文档数据
* @param name 字段
* @param value 值
*/
public void FilterQuery(String name,String value){
boolean flag=false;
MongoDatabase mongoDb=mongoClient.getDatabase(dbName);
MongoCollection<Document> dbColl= mongoDb.getCollection(coll);
//过滤器
Bson regex = Filters.regex(name,value);
//Bson regex = Filters.eq(name,value); //eq是直接匹配,regex是正则匹配(^代表匹配开头,&代表匹配末尾)
FindIterable<Document> find = dbColl.find(regex);
for (Document document : find) {
log.info("FilterQuery查询结果: "+document);
}
}
/**
* 删除文档数据
* @param name 字段
* @param value 值
*/
public void removeData(String name,String value) {
MongoDatabase mongoDb=mongoClient.getDatabase(dbName);
MongoCollection<Document> dbColl= mongoDb.getCollection(coll);
//dbColl.deleteMany(Filters.eq("aoeAes", "吴秀梅"));
DeleteResult deleteResult=dbColl.deleteMany(Filters.regex(name, value));
log.info("删除文档结果: "+deleteResult);
if(deleteResult.getDeletedCount()>0){
log.info("删除文档成功,删除数量:"+deleteResult.getDeletedCount());
}
}
/**
* 更新文档数据
* @param name 字段
* @param value 值
*/
public void updateData(String name,String value,String name2,String updateValue) {
MongoDatabase mongoDb=mongoClient.getDatabase(dbName);
MongoCollection<Document> dbColl= mongoDb.getCollection(coll);
//过滤器
Bson filter = Filters.eq(name,value); //eq是直接匹配,regex是正则匹配(^代表匹配开头,&代表匹配末尾)
//指定修改的更新文档
Document document = new Document("$set", new Document(name2, updateValue));
dbColl.updateOne(filter,document);
}
/**
* 关闭连接对象
*/
public void close(){
if(mongoClient != null){
mongoClient.close();
}
mongoClient = null;
}
}
4.调用和执行结果
public static void main(String[] args){
MongoDBUtils mdb = new MongoDBUtils();
mdb.MongoConnect();
//mdb.MongoConnect();
//字段名和字段值
String column = "aoeId,aoeAes,aoeSm4,aoeSm4_a,aoeEmail,aoePhone,aoeIdCard,aoeOfficerCard,aoePassport,aoeGeneralIdCard,aoeCreditCard,aoePosition";
String value="1,吴秀梅,Beijing Refining Network Technology Co.Ltd.,海淀区,qianxiulan@yahoo.com,15652996964,210302199608124861,武水电字第3632734号,BWP018930705,0299233902,6212262502009182455,测试数据";
//解析字段名
String[] column_aa = column.split(",");
//解析值
String[] value_aa = value.split(",");
mdb.removeData("aoeAes","吴秀梅");
//插入查询删除文档
mdb.insert(column_aa, value_aa);
//mdb.query();
mdb.FilterQuery("aoeAes","吴秀梅");
mdb.updateData("aoeAes","吴秀梅","aoeEmail","update001@yahoo.com");
mdb.query();
//插入查询删除文档
mdb.close();
}
执行结果:
Java操作MongoDB详解
https://blog.csdn.net/m0_37583655/article/details/123827112
如果查询返回值需要放入bean中,参考
package bean;
import java.io.Serializable;
/**
* ClassName AoeData
* description TODO
*
* @author : HMF
* date: 2022/5/24 16:28
**/
public class AoeData implements Serializable {
private static final long serialVersionUID = -8813563931766174208L;
private int aoeId; //aoeId
private String aoeAes; //aoeAes
private String aoeSm4; //aoeSm4
private String aoeSm4_a; //aoeSm4_a
private String aoeEmail; //aoeEmail
private String aoePhone; //aoePhone
private String aoeIdCard; //aoeIdCard
private String aoeOfficerCard; //aoeOfficerCard
private String aoePassport; //aoePassport
private String aoeGeneralIdCard; //aoeGeneralIdCard
private String aoePosition;//aoePosition
private String aoeCreditCard; //aoeCreditCard
public int getAoeId() {
return aoeId;
}
public void setAoeId(int aoeId) {
this.aoeId = aoeId;
}
public String getAoeAes() {
return aoeAes;
}
public void setAoeAes(String aoeAes) {
this.aoeAes = aoeAes;
}
public String getAoeSm4() {
return aoeSm4;
}
public void setAoeSm4(String aoeSm4) {
this.aoeSm4 = aoeSm4;
}
public String getAoeSm4_a() {
return aoeSm4_a;
}
public void setAoeSm4_a(String aoeSm4_a) {
this.aoeSm4_a = aoeSm4_a;
}
public String getAoeEmail() {
return aoeEmail;
}
public void setAoeEmail(String aoeEmail) {
this.aoeEmail = aoeEmail;
}
public String getAoePhone() {
return aoePhone;
}
public void setAoePhone(String aoePhone) {
this.aoePhone = aoePhone;
}
public String getAoeIdCard() {
return aoeIdCard;
}
public void setAoeIdCard(String aoeIdCard) {
this.aoeIdCard = aoeIdCard;
}
public String getAoeOfficerCard() {
return aoeOfficerCard;
}
public void setAoeOfficerCard(String aoeOfficerCard) {
this.aoeOfficerCard = aoeOfficerCard;
}
public String getAoePassport() {
return aoePassport;
}
public void setAoePassport(String aoePassport) {
this.aoePassport = aoePassport;
}
public String getAoeGeneralIdCard() {
return aoeGeneralIdCard;
}
public void setAoeGeneralIdCard(String aoeGeneralIdCard) {
this.aoeGeneralIdCard = aoeGeneralIdCard;
}
public String getAoePosition() {
return aoePosition;
}
public void setAoePosition(String aoePosition) {
this.aoePosition = aoePosition;
}
public String getAoeCreditCard() {
return aoeCreditCard;
}
public void setAoeCreditCard(String aoeCreditCard) {
this.aoeCreditCard = aoeCreditCard;
}
}