MongoDB初探系列之四:MongoDB与Java共舞
Posted jhcelue
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MongoDB初探系列之四:MongoDB与Java共舞相关的知识,希望对你有一定的参考价值。
因为版本号不同,可能API也有所不同。本次学习用的是3.0版本号。
1、使用的mongodb的jdbc驱动版本号为:mongo-java-driver-3.0.0.jar
2、本节仅仅是简介JDBC操作,临时不考虑效率问题。
3、封装的工具类代码例如以下:
public class MongoDBProxy { private static MongoDBProxy proxy=null;//单实例 private static MongoDatabase db=null;//数据库连接对象 private static String [] paramArray=new String[5];//数据库连接參数 private MongoDBProxy(){ } static{ paramArray[0]="username"; paramArray[1]="password"; paramArray[2]="host"; paramArray[3]="port"; paramArray[4]="databaseName"; } /** * 得到MongoDBProxy * 採用系统默认配置 */ public static MongoDBProxy getMongoDBProxy(){ if(proxy==null){ proxy=new MongoDBProxy(); String sURI = String.format("mongodb://%s:%[email protected]%s:%d/%s",paramArray[0],paramArray[1],paramArray[2],Integer.parseInt(paramArray[3]),paramArray[4]); MongoClientURI uri = new MongoClientURI(sURI); MongoClient mongoClient = new MongoClient(uri); db= mongoClient.getDatabase(paramArray[4]); } return proxy; } /** * 批量查询数据 * @param table 集合名称 * @param page 分页參数 * @param filter 过滤条件 * @param sort 排序条件 */ public Page findDocList(String table,Page page,Bson filter,Bson sort){ MongoCollection<Document> coll=db.getCollection(table); long count=coll.count(filter);//依据过滤条件获取数据总量 Page p=PageUtil.createPage(page,Integer.parseInt(String.valueOf(count))); p.setFromUrl((page.getFromUrl()==null)?"":page.getFromUrl()); p.setParamString((page.getParamString()==null)?"":page.getParamString()); FindIterable<Document> resultIterable=coll.find(); //运行条件过滤 resultIterable=resultIterable.sort(sort).filter(filter).skip(p.getBeginIndex()).batchSize(p.getEveryPage()); MongoCursor<Document> cousor=resultIterable.iterator(); List<Document> dataList=new ArrayList<Document>(); while(cousor.hasNext()){ dataList.add(cousor.next()); } p.setDataList(dataList); return PageUtil.buildPageString(p); } /** * 获取单个文档 * @param table 集合名称 * @param filter 过滤条件 * @param sort 排序条件 */ 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 集合名称 * @prama doc 文档内容 */ public void addDocument(String table,Document doc){ MongoCollection<Document> coll=getCollection(table); coll.insertOne(doc); } /** * 批量加入文档 * @param table 集合名称 * @prama docList 文档集合 */ public void addDocumentList(String table,List<Document> docList){ MongoCollection<Document> coll=getCollection(table); coll.insertMany(docList); } /** * 更新文档 * @param table 集合名称 * @param query 查询条件 * @param up 更新数据 */ 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 替换的文件对象 */ public UpdateResult replaceDocument(String table,Bson query,Document up){ MongoCollection<Document> coll=getCollection(table); return coll.replaceOne(query, up); } /** * 删除文档 * @param table 集合名称 * @param delete 删除条件 */ public DeleteResult deleteDocument(String table,Bson delete){ MongoCollection<Document> coll=getCollection(table); return coll.deleteOne(delete); } /** * 获取集合对象 * @param table 集合名称 */ private MongoCollection<Document> getCollection(String table){ return db.getCollection(table); } }
4、调用demo
MongoDBProxy proxy=MongoDBProxy.getMongoDBProxy(); System.out.println(proxy.findOneDoc("users",null,null).get("_id")); Document doc=new Document(); doc.put("user","李四"); proxy.addDocument("users", doc); Bson bson=new BasicDBObject("user","张三"); proxy.deleteDocument("users", bson);
兴许再深入学习,先用demo上上手哇。哈哈。
以上是关于MongoDB初探系列之四:MongoDB与Java共舞的主要内容,如果未能解决你的问题,请参考以下文章
Azure + MongoDB - NoSQL数据库集群初探(实践篇)