工具类:package Utils;import com.google.common.collect.Lists;
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 com.mongodb.client.result.UpdateResult;
import org.apache.commons.lang3.StringUtils;
import org.apache.log4j.Logger;
import org.bson.Document;
import org.bson.conversions.Bson;import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;public class MongoDBUtil {private static MongoDBUtil mongoDBUtil;private static final String PLEASE_SEND_IP = "没有传入ip或者端口号";private static final String PLEASE_INSTANCE_MONGOCLIENT = "请实例化MongoClient";private static final String PLEASE_SEND_MONGO_REPOSITORY = "请指定要删除的mongo库";private static final String DELETE_MONGO_REPOSITORY_EXCEPTION = "删除mongo库异常";private static final String DELETE_MONGO_REPOSITORY_SUCCESS = "批量删除mongo库成功";private static final String NOT_DELETE_MONGO_REPOSITORY = "未删除mongo库";private static final String DELETE_MONGO_REPOSITORY = "成功删除mongo库:";private static final String CREATE_MONGO_COLLECTION_NOTE = "请指定要创建的库";private static final String NO_THIS_MONGO_DATABASE = "未找到指定mongo库";private static final String CREATE_MONGO_COLLECTION_SUCCESS = "创建mongo库成功";private static final String CREATE_MONGO_COLLECTION_EXCEPTION = "创建mongo库错误";private static final String NOT_CREATE_MONGO_COLLECTION = "未创建mongo库collection";private static final String CREATE_MONGO_COLLECTION_SUCH = "创建mongo库collection:";private static final String NO_FOUND_MONGO_COLLECTION = "未找到mongo库collection";private static final String INSERT_DOCUMEN_EXCEPTION = "插入文档失败";private static final String INSERT_DOCUMEN_SUCCESSS = "插入文档成功";private static final Logger logger = Logger.getLogger(MongoDBUtil.class);private MongoDBUtil(){}private static class SingleHolder{private static MongoDBUtil mongoDBUtil = new MongoDBUtil();}public static MongoDBUtil instance(){return SingleHolder.mongoDBUtil;}public static MongoDBUtil getMongoDBUtilInstance(){if(mongoDBUtil == null){return new MongoDBUtil();}return mongoDBUtil;}/*** 获取mongoDB连接* @param host* @param port* @return*/public MongoClient getMongoConnect(String host,Integer port){if(StringUtils.isBlank(host) || null == port){logger.error(PLEASE_SEND_IP);return null;}return new MongoClient(host, port);}/*** 批量删除mongo库* @param mongoClient* @param dbNames* @return*/public String bulkDropDataBase(MongoClient mongoClient,String...dbNames){if(null == mongoClient) return PLEASE_INSTANCE_MONGOCLIENT;if(null==dbNames || dbNames.length==0){return PLEASE_SEND_MONGO_REPOSITORY;}try {Arrays.asList(dbNames).forEach(dbName -> mongoClient.dropDatabase(dbName));logger.info(DELETE_MONGO_REPOSITORY_SUCCESS);}catch (Exception e){e.printStackTrace();logger.error(DELETE_MONGO_REPOSITORY_EXCEPTION);}return dbNames == null ? NOT_DELETE_MONGO_REPOSITORY:DELETE_MONGO_REPOSITORY + String.join(",",dbNames);}/*** 创建指定database的collection* @param mongoClient* @param dbName* @param collections* @return*/public String createCollections(MongoClient mongoClient,String dbName,String...collections){if(null == mongoClient) return PLEASE_INSTANCE_MONGOCLIENT;if(null==collections || collections.length==0){return CREATE_MONGO_COLLECTION_NOTE;}MongoDatabase mongoDatabase = mongoClient.getDatabase(dbName);if(null == mongoDatabase) return NO_THIS_MONGO_DATABASE;try {Arrays.asList(collections).forEach(collection ->  mongoDatabase.createCollection(collection));logger.info(CREATE_MONGO_COLLECTION_SUCCESS);return collections == null ? NOT_CREATE_MONGO_COLLECTION:CREATE_MONGO_COLLECTION_SUCH + String.join(",",collections);}catch (Exception e){e.printStackTrace();logger.error(CREATE_MONGO_COLLECTION_EXCEPTION);}return null;}/*** 获取MongoCollection* @param mongoClient* @param dbName* @param collection* @return*/public MongoCollection<Document> getMongoCollection(MongoClient mongoClient,String dbName,String collection){if(null == mongoClient) return null;if(StringUtils.isBlank(dbName)) return null;if(StringUtils.isBlank(collection)) return null;MongoDatabase mongoDatabase = mongoClient.getDatabase(dbName);MongoCollection<Document> collectionDocuments = mongoDatabase.getCollection(collection);if(null == collectionDocuments) return null;return collectionDocuments;}/*** 获取到MongoClient* @param ip* @param port* @param userName* @param dbName* @param psw* @returnMongoClient*/public static MongoClient getMongoClientByCredential(String ip,int port,String userName,String dbName,String psw){ServerAddress serverAddress = new ServerAddress(ip,port);List<ServerAddress> addrs = new ArrayList<ServerAddress>();addrs.add(serverAddress);//MongoCredential.createScramSha1Credential()三个参数分别为 用户名 数据库名称 密码MongoCredential credential = MongoCredential.createScramSha1Credential(userName, dbName, psw.toCharArray());List<MongoCredential> credentials = new ArrayList<MongoCredential>();credentials.add(credential);//通过连接认证获取MongoDB连接MongoClient mongoClient = new MongoClient(addrs,credentials);return mongoClient;}/*** 插入文档数据* @param mongoCollection* @param params*/public void insertDoucument(final MongoCollection<Document> mongoCollection, final Map<String,Object> params){if(null == mongoCollection) return;try {Document document = new Document();params.keySet().stream().forEach(field -> document.append(field, params.get(field)));List<Document> documents = Lists.newArrayList();documents.add(document);mongoCollection.insertMany(documents);logger.info(INSERT_DOCUMEN_SUCCESSS);}catch (Exception e){e.printStackTrace();logger.error(INSERT_DOCUMEN_EXCEPTION);}}/*** 更新文档* @param mongoCollection* @param conditionParams* @param updateParams*/public  void updateDocument(final MongoCollection<Document> mongoCollection,final Map<String,Object> conditionParams,final Map<String,Object> updateParams){if(null == mongoCollection) return;if (null == conditionParams) return;if (null == updateParams) return;Document conditonDocument = new Document();conditionParams.keySet().stream().filter(p -> null != p).forEach(o -> {conditonDocument.append(o,conditionParams.get(o));});Document updateDocument = new Document();updateParams.keySet().stream().filter(p -> null != p).forEach(o -> {updateDocument.append(o,updateParams.get(o));});UpdateResult updateResult = mongoCollection.updateMany(conditonDocument,new Document("$set",updateDocument));System.out.println("修改了:"+updateResult.getModifiedCount()+" 条数据 ");}/***删除文档* @param mongoCollection* @param multiple* @param conditionParams* @return*/public long deleteDocument(final MongoCollection<Document> mongoCollection,final boolean multiple,final Map<String,Object> conditionParams){if(null == mongoCollection) return 0;if(null == conditionParams) return 0;Document document = new Document();conditionParams.keySet().stream().filter(p -> null != p).forEach(o -> {document.append(o,conditionParams.get(o));});if(multiple) {return mongoCollection.deleteMany(document).getDeletedCount();}//删除文档第一条return mongoCollection.deleteOne(document).getDeletedCount();}/*** 查询文档 带范围查找、分页、排序* @param mongoCollection* @param conditionParams* @param limit* @param skip* @param sortParams*/public FindIterable<Document> queryDocument(final MongoCollection<Document> mongoCollection, final Map<String,Object> conditionParams,final Integer limit, final Integer skip, final Map<String,Integer> sortParams,final Map<String,Integer> gtLtOrOtherParams,final String compareField){if(null == mongoCollection) return null;FindIterable<Document> findIterable = mongoCollection.find();if(null == conditionParams || null == findIterable) return findIterable;Document document = new Document();conditionParams.keySet().stream().filter(p -> null!=p).forEach(o -> document.append(o,conditionParams.get(o)));findIterable = findIterable.filter(document);MongoCursor<Document> mongoCursor = findIterable.iterator();while(mongoCursor.hasNext()){System.out.println(mongoCursor.next());}if(null == findIterable || null == gtLtOrOtherParams) return findIterable;Document gtOrLtDoc = new Document();gtLtOrOtherParams.keySet().stream().filter(p -> null!=p).forEach(o -> gtOrLtDoc.append(o,gtLtOrOtherParams.get(o)));findIterable = findIterable.filter(new Document(compareField,gtOrLtDoc));if(null == findIterable || null == limit) return findIterable;findIterable = findIterable.limit(limit);if(null == findIterable || null == skip) return findIterable;findIterable = findIterable.skip(skip);if(null == sortParams) return findIterable;Document sortDocument = new Document();sortParams.keySet().stream().filter(p -> null!=p).forEach(o -> sortDocument.append(o,sortParams.get(o)));findIterable = findIterable.filter(sortDocument);MongoCursor<Document> mongoCursor2 = findIterable.iterator();while(mongoCursor2.hasNext()){System.out.println(mongoCursor2.next());}return findIterable;}/*** 全文查询* @param mongoCollection* @return*/public FindIterable<Document>  queryDocument(final MongoCollection<Document> mongoCollection){if(null == mongoCollection) return null;FindIterable<Document> findIterable = mongoCollection.find();return findIterable;}/***带排序的查询* @param mongoCollection* @param conditionParams* @param limit* @param skip* @param sortParams* @return*/public FindIterable<Document> queryDocument(final MongoCollection<Document> mongoCollection, final Map<String,Object> conditionParams,final Integer limit, final Integer skip, final Map<String,Integer> sortParams){if(null == mongoCollection) return null;/*** 1. 获取迭代器FindIterable<Document>* 2. 获取游标MongoCursor<Document>* 3. 通过游标遍历检索出的文档集合* */FindIterable<Document> findIterable = mongoCollection.find();if(null == conditionParams || null == findIterable) return findIterable;Document document = new Document();conditionParams.keySet().stream().filter(p -> null!=p).forEach(o -> document.append(o,conditionParams.get(o)));findIterable = findIterable.filter(document);if(null == findIterable || null == limit) return findIterable;findIterable = findIterable.limit(limit);if(null == findIterable || null == skip) return findIterable;findIterable = findIterable.skip(skip);if(null == sortParams) return findIterable;Document sortDocument = new Document();sortParams.keySet().stream().filter(p -> null!=p).forEach(o -> sortDocument.append(o,sortParams.get(o)));findIterable = findIterable.sort(sortDocument);return findIterable;}/*** 查询文档 简单条件查询* @param mongoCollection* @param conditionParams* @return*/public FindIterable<Document> queryDocument(final MongoCollection<Document> mongoCollection, final Map<String,Object> conditionParams){if(null == mongoCollection) return null;FindIterable<Document> findIterable = mongoCollection.find();if(null == conditionParams || null == findIterable) return findIterable;Document document = new Document();conditionParams.keySet().stream().filter(p -> null!=p).forEach(o -> document.append(o,conditionParams.get(o)));findIterable = findIterable.filter(document);return findIterable;}/*** 用于输出部分的列信息* @param documents*/public void printDocuments(FindIterable<Document> documents, String[] fields) {if (fields != null && fields.length > 0) {int num = 0;for (Document d : documents) {StringBuilder stringBuilder = new StringBuilder();for (int i = 0; i < fields.length; i++) {if(fields[i].equals("catm")){}stringBuilder.append(fields[i] + ": "+d.getString(fields[i])+" ");}System.out.println("第" + (++num) + "条数据: " + stringBuilder);}}}/*** 用于输出所有的列信息* @param documents*/public void printDocuments(FindIterable<Document> documents) {int num = 0;for (Document d : documents) {System.out.println("第" + (++num) + "条数据: " + d.toString());}}}

  测试类:

public class Mongo {public static void main(String[] args) {MongoDBUtil mongoDBUtil = MongoDBUtil.getMongoDBUtilInstance();//MongoClient client = MongoDBUtil.instance().getMongoConnect("127.0.0.1",27017); 连接本地的mongoMongoClient client = mongoDBUtil.getMongoClientByCredential("127.0.0.1",27017,"my","my","my");try {MongoCollection<Document> collection = mongoDBUtil.getMongoCollection(client,"whale","wb0097waterdepartmentbasic");//1、 简单的条件查询Map<String,Object> conditionParams = Maps.newHashMap();conditionParams.put("wbtp","003");FindIterable<Document> documents =  mongoDBUtil.queryDocument(collection,conditionParams);mongoDBUtil.printDocuments(documents);//插入文档for(int i=0;i<=100;i++) {Map<String, Object> params = Maps.newHashMap();params.put("qq", "zy");params.put("time", new Date());params.put("name", "bb" + i);params.put("num", i);mongoDBUtil.insertDoucument(collection, params);}//更改文档Map<String,Object> condParams = Maps.newHashMap();condParams.put("description","database");condParams.put("aa","bbb");Map<String,Object> updateParams = Maps.newHashMap();updateParams.put("description","eee");MongoDBUtil.instance().updateDocument(collection,condParams,updateParams);//            //删除文档数据Map<String,Object> condParams1 = Maps.newHashMap();condParams.put("qq",1111);
//MongoDBUtil.instance().deleteDocument(collection,true,condParams1);//复杂的查询文档Map<String,Object> condParams2 = Maps.newHashMap();condParams.put("qq","zy");Map<String,Integer> sortParams = Maps.newHashMap();sortParams.put("num",-1);sortParams.put("name",1);Map<String,Integer> compareParams = Maps.newHashMap();compareParams.put("$gt",75);compareParams.put("$lt",83);FindIterable<Document> documents1 = MongoDBUtil.instance().queryDocument(collection,condParams2,10,0,sortParams,compareParams,"num");mongoDBUtil.printDocuments(documents1);} catch (Exception e) {System.err.println(e.getClass().getName() + ": " + e.getMessage());}}
}

  

转载于:https://www.cnblogs.com/zyxs/p/8820483.html

自己的mongodb的CRUD封装相关推荐

  1. Java操作MongoDB数据库CRUD(增删查改)

    Java操作MongoDB数据库CRUD(增删查改) 借助mongo-java-driver包,对MongoDB数据库的集合(DataTable)及文档(BSON对象数据)进行增删查改操作.本文的核心 ...

  2. MongoTemplate crud 封装

    第一次接触mongodb,在使用MongoTemplate的过程中,鉴于太多冗余代码以及开发效率,故自己做了一个简单的crud封装供公司项目中使用 目录 定义一个接口IMongoBaseService ...

  3. 使用Express和MongoDB构建CRUD应用程序-第2部分

    by Zell Liew 由Zell Liew 使用Express和MongoDB构建CRUD应用程序-第2部分 (Building a CRUD Application with Express a ...

  4. SpringBoot整合MongoDB完成CRUD操作(超详细)

    官方文档:https://www.mongodb.com/docs/manual/reference/connection-string/ 01.导入依赖 <dependency>< ...

  5. mongodb netcore 操作封装_mongodb 的基本函数语法封装

    //这个模块里面封装了所有对数据库的常用操作 var MongoClient = require('mongodb').MongoClient; var config = require(" ...

  6. mongodb java条件查询_java实现对mongodb,泛型封装增删查改、条件查询等操作

    本文实现一个通用泛型封装实现类,需要给定一个集合对象,类似mysql中与java对应的表:思想就是把给定的对象解析出所有非空字段,保存到一个BasicDBObject中,这里一定要保证java对象与m ...

  7. java操作mongodb,泛型封装增删查改、条件查询等操作

    本文实现一个通用泛型封装实现类,需要给定一个集合对象,类似mysql中与java对应的表:思想就是把给定的对象解析出所有非空字段,保存到一个BasicDBObject中,这里一定要保证java对象与m ...

  8. Asp.net Core1.1创建简单WebAPI对Mongodb进行CRUD操作

    1.使用VS2017建立一个.netcore1.1的WebAPI项目 选择webAPI模板 2.添加mongodb驱动 工具--NuGet包管理器--程序包管理控制台: Install-Package ...

  9. 学习笔记(十八)——MongoDB(CRUD)与Python交互

    什么是MongoDB? MongoDB 是一个跨平台的,面向文档的数据库,是当前 NoSQL 数据库产品中最热门的一种.它介于关系数据库和非关系数据库之间,是非关系数据库当中功能最丰富,最像关系数据库 ...

最新文章

  1. [field:softlinks/]逻辑过程
  2. oracle awr windows,windows下的oracle 如何生成awr报告
  3. 《大数据算法》一1.2 大数据算法
  4. 【一周入门MySQL—4】数据库进阶练习
  5. python 访问需要HTTP Basic Authentication认证的资源
  6. 《2021 年中国视频云场景应用洞察白皮书》联合首发!
  7. 程序设计基础c语言第二版巫,程序设计基础 (C语言)---2版
  8. BPSK调制下(2,1,6)标准卷积码及打孔生成2/3、3/4、4/5、5/6删余码Viterbi译码误码率曲线图(MATLAB实现)
  9. 设计模式C++实现(2)——单例模式
  10. hbuilderx内置服务器启动失败_我们来看看Swoole是如何实现WebSocket服务器及客户端的...
  11. 如何给CSDN博客添加个人微信二维码或自定义栏目
  12. ncf 推荐系统_TopN物品推荐算法评测设置回顾
  13. js模拟点击事件实现代码
  14. git解决 remote: Permission to wuheng1991/site-manager.git denied to XXX
  15. Java常用类(三):FileUtils类
  16. FFmpeg-Python 给视频添加文字
  17. 如何使用Outlook创建带有超链接的图片签名
  18. 【转】全套汽车标志\路牌,好不容易找到的哦!
  19. 激励函数简介 Tensorflow最简单的三层神经网络及matplotlib可视化 附激励函数常见类型
  20. scanf(3c,c);

热门文章

  1. 2019中南大学考研计算机考试,中南大学2019年全国硕士研究生入学考试《计算机网络》考.PDF...
  2. java清空字符串_java面向对象,垃圾回收机制
  3. 面试官问我:spring、springboot、springcloud的区别,我笑了
  4. js端调用android端同步方法,JS怎样调用Android本地原生方法
  5. bfgs算法matlab程序,BFGS优化算法及应用实例.docx
  6. 收汇核销系统无法与服务器连接,出口收汇核销网上报系统一直都无法与服务器建立连接.doc...
  7. linux用head显示15字符,每天一个linux命令-head
  8. 第十六届全国大学生智能车竞赛全部比赛胜利结束了
  9. 第十六届全国大学生智能汽车竞赛RT-Thread创新专项奖
  10. 2021年春季学期-信号与系统-第十二次作业参考答案-第一小题