java简单操作 Mongo工具

package com.homolo.justice.lcsms.www.util;

import com.mongodb.BasicDBList;
import com.mongodb.BasicDBObject;
import com.mongodb.MongoClient;
import com.mongodb.MongoClientOptions;
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.result.DeleteResult;
import com.mongodb.client.result.UpdateResult;
import org.bson.Document;
import org.bson.conversions.Bson;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
 * Mongo操作工具类.
 *
 * @author ldy
 * @date 2020/10/29
 */
@Component
public class MongoUtil {

	private static final Logger LOGGER = LoggerFactory.getLogger(MongoUtil.class);

	private static final String HOST_ONE = "ip1";
	private static final String HOST_TWO = "ip2";
	private static final int PORT = 端口;
	private static final String DB_NAME = "数据库名称";
	private static final String AUTH_DATABASE = "自动登陆数据库";
	private static final String USER_NAME = "用户名称";
	private static final String USER_PWD = "密码";
	private static MongoDatabase db;

	static {
		try {
			// 连接到MongoDB服务
			// ServerAddress()两个参数分别为 服务器地址 和 端口
			List<ServerAddress> addrs = new ArrayList<>();
			addrs.add(new ServerAddress(HOST_ONE, PORT));
			addrs.add(new ServerAddress(HOST_TWO, PORT));
			//三个参数分别为 用户名 数据库名称 密码
			MongoCredential credential = MongoCredential.createScramSha1Credential(USER_NAME, AUTH_DATABASE, USER_PWD.toCharArray());
			// 通过连接认证获取MongoDB连接
			//连接操作对象
			MongoClientOptions options = MongoClientOptions.builder().sslEnabled(false).build();
			//连接对象
			MongoClient mongoClient = new MongoClient(addrs, credential, options);
			//连接到数据库
			db = mongoClient.getDatabase(DB_NAME);
			LOGGER.info("数据库连接成功");
		} catch (Exception e) {
			LOGGER.error("数据库连接失败:", e);
		}
	}


	/**
	 * 根据集合名称获取集合数据 .
	 *
	 * @param collectionName 集合名称.
	 * @param filter 过滤条件.
	 * @param sort 排序条件.
	 * @param date 日期条件.
	 * @return 返回数据集合.
	 */
	public List<Document> getCollction(String collectionName, Bson filter, Bson sort, Date date) {
		if (db == null) {
			return null;
		}
		MongoCollection<Document> collection = db.getCollection(collectionName);
		FindIterable<Document> documents = collection.find(cond);
		if (filter != null) {
			documents.filter(filter);
		}
		if (sort != null) {
			documents.sort(sort);
		}
		MongoCursor<Document> iterator = documents.iterator();
		List<Document> result = new ArrayList<>();
		while (iterator.hasNext()) {
			Document next = iterator.next();
			result.add(next);
		}
		if (!result.isEmpty()) {
			return result;
		}
		return null;
	}

	/**
	 * 获取单个文档.
	 *
	 * @param table  集合名称.
	 * @param filter 过滤条件.
	 * @param sort   排序条件.
	 * @return    Document文档信息
	 */
	public  Document findOneDoc(String table, Bson filter, Bson sort) {
		MongoCollection<Document>  coll = db.getCollection(table);
		FindIterable<Document> resultIterable = coll.find();
		if (sort != null) {
			resultIterable.sort(sort);
		}
		if (filter != null) {
			resultIterable.filter(filter);
		}
		return resultIterable.first();
	}
	/**
	 * 添加文档.
	 *
	 * @param table 集合名称.
	 * @param doc   文档内容.
	 */
	public void addDocument(String table, Document doc) {
		MongoCollection<Document> coll = getCollection(table);
		coll.insertOne(doc);
		LOGGER.info("添加成功");
	}
	/**
	 * 批量添加文档.
	 *
	 * @param table     集合名称.
	 * @param docList   文档集合.
	 */
	public  void addDocumentList(String table, List<Document> docList) {
		MongoCollection<Document> coll = getCollection(table);
		coll.insertMany(docList);
	}
	/**
	 * 更新文档.
	 *
	 * @param table  集合名称.
	 * @param query  查询条件.
	 * @param up     更新数据.
	 * @return UpdateResult更新之后返回的信息
	 */
	public  UpdateResult updateDocument(String table, Bson query, Bson up) {
		MongoCollection<Document> coll = getCollection(table);
		return coll.updateOne(query, up);
	}
	/**
	 * 替换文档.
	 *
	 * @param table  集合名称.
	 * @param query  查询条件.
	 * @param up     替换的文件对象.
	 * @return UpdateResult替换之后返回的信息
	 */
	public  UpdateResult replaceDocument(String table, Bson query, Document up) {
		MongoCollection<Document> coll = getCollection(table);
		return coll.replaceOne(query, up);
	}
	/**
	 * 删除文档.
	 *
	 * @param table  集合名称
	 * @param delete 删除条件
	 * @return DeleteResult删除之后返回的信息
	 */
	public  DeleteResult deleteDocument(String table, Bson delete) {
		MongoCollection<Document> coll = getCollection(table);
		return coll.deleteOne(delete);
	}
	/**
	 * 获取集合对象.
	 *
	 * @param table  集合名称
	 * @return MongoCollection删除之后返回的信息
	 *
	 */
	private  MongoCollection<Document>  getCollection(String table) {
		return db.getCollection(table);
	}

}


注:
该方法我之测试了添加查询,和替换功能,其他需要使用需要自己去测试

//根据条件查询数据
Bson bson = new BasicDBObject("synsource", "条件");
// 获取信访人信息
List<Document> collction = this.mongoUtil.getCollction("table", bson, null);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值