MongoDB——MongoProvider
2015-11-29 23:29
531 查看
MongoDB,最终还是要被操作语言调用的。我们最近的一个java项目,业务比较简单,但对超文本的操作比较多,最终选择了MongoDB这款非关系型数据库。下面就看看我们项目中封装的一个类MongoProvider,是如何对MongoDB进行增删改查的。
在说MongoProvider之前,先看一下 “数据库连接” 的这个类。
下面,就是重头戏——MongoProvider,封装了一些常用的对MongoDB的增删除改查操作。主要内容都在代码注释里了,直接看代码吧。
在说MongoProvider之前,先看一下 “数据库连接” 的这个类。
public class MongoConnect { public static MongoConnect instance; private Mongo mongo; private String dbname= ""; private MongoConnect() { instance = this; } // 单例 public static MongoConnect getInstance() { if(instance == null) new MongoConnect(); return instance; } // 连接数据库 public void connect() { System.setProperty("MONGO.POOLSIZE", String.valueOf(200)); try { String ip = FSConfig.getInstance().getVar("db.ip"); String pt = FSConfig.getInstance().getVar("db.port"); dbname = FSConfig.getInstance().getVar("db.dbname"); if(ip == null || pt == null){ System.out.println("Database not configured!!!!!"); return; } int port = Integer.valueOf(pt); System.out.println("Connecting to db: "+ip+":"+port); mongo = new Mongo(ip, port); MongoOptions options = mongo.getMongoOptions(); options.autoConnectRetry = true; options.connectionsPerHost = 1000; boolean result = mongo.getDB(dbname).authenticate(FSConfig.getInstance().getVar("db.account"), FSConfig.getInstance().getVar("db.password").toCharArray()); if(result) { System.out.println("DB connected"); } else { System.out.println("DB connection failed!"); } } catch (UnknownHostException e) { e.printStackTrace(); } catch (MongoException e) { e.printStackTrace(); } catch(Exception e) { e.printStackTrace(); } } public DB getDB() { if(mongo == null) return null; return mongo.getDB(dbname); } public DB getDB(String dbName) { if(mongo == null) return null; return mongo.getDB(dbName); } public void close() { if(mongo == null) return; mongo.close(); } }
下面,就是重头戏——MongoProvider,封装了一些常用的对MongoDB的增删除改查操作。主要内容都在代码注释里了,直接看代码吧。
public class MongoProvider { // 图片路径 public static final String PIC_DIR = "./"; // 集合名称 public static final String PLATFORM_USER = "platform_user"; public static final String IM_USERPIC = "im_userpic"; public static final String IM_ATTACHEMENT = "im_attachement"; public static final String IM_MSGTEMPFILE = "im_msgtempfile"; public static final String IM_DEPARTMENT = "im_department"; public static final String IM_SHAREFORDER = "im_shareforder"; public static final String IM_ATTENCEINFO = "im_attenceinfo"; public static final String IM_ATTENCE = "im_attence"; public static final String IM_ATTENCE_SPECIAL = "im_attencespecial"; public static final String IM_FILES = "im_files"; public static final String IM_FILE_PKG = "im_file_pkg"; public static final String IM_FILE_STORAGE = "im_file_storage"; public static final String IM_FILE_TEMP = "im_file_temp"; private static Logger log = Logger.getLogger(MongoProvider.class.getName()); /** * 查询集合中的文档数 * @param collectionName * 集合名称 * @param map * 查询条件 * @return * */ public static long count(String collectionName, DBObject map) { try { DBCollection collection = MongoConnect.getInstance().getDB() .getCollection(collectionName); if (map == null) { return collection.count(); } else { return collection.count(map); } } catch (Exception e) { log.log(Level.WARNING, "", e); } return 0; } /** * 添加 * @param collectionName * 集合名称 * @param map * 查询条件 */ public static void insert(String collectionName, DBObject map) { try { DBCollection collection = MongoConnect.getInstance().getDB() .getCollection(collectionName); collection.insert(map); } catch (Exception e) { log.log(Level.WARNING, "", e); } } /** * 更新 * @param collectionName * 集合名称 * @param condition * 更新条件 * @param doc * 更新字段 */ public static void update(String collectionName, DBObject condition, DBObject doc) { try { DBCollection collection = MongoConnect.getInstance().getDB() .getCollection(collectionName); collection.update(condition, doc); } catch (Exception e) { log.log(Level.WARNING, "", e); } } /** * 更新全部 * @param collectionName * 集合名称 * @param condition * 更新条件 * @param doc * 更新字段 */ public static void updateAll(String collectionName, DBObject condition, DBObject doc) { try { DBCollection collection = MongoConnect.getInstance().getDB() .getCollection(collectionName); collection.update(condition, doc, false, true); } catch (Exception e) { log.log(Level.WARNING, "", e); } } /** * 更新 * @param collectionName * 集合名称 * @param condition * 更新条件 * @param doc * 更新字段 * @param multi * mongodb默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。 */ public static void update(String collectionName, DBObject condition, DBObject doc, boolean multi) { try { DBCollection collection = MongoConnect.getInstance().getDB() .getCollection(collectionName); collection.update(condition, doc, false, multi); } catch (Exception e) { log.log(Level.WARNING, "", e); } } /** * 更新 * @param collectionName * 集合名称 * @param condition * 更新条件 * @param doc * 更新字段 * @param upsert * 如果不存在update的记录,是否插入一条新的,true为插入,默认是false,不插入。 * @param multi * mongodb默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。 */ public static void update(String collectionName, DBObject condition, DBObject doc, boolean upsert, boolean multi) { try { DBCollection collection = MongoConnect.getInstance().getDB() .getCollection(collectionName); collection.update(condition, doc, false, multi); } catch (Exception e) { log.log(Level.WARNING, "", e); } } /** * 更新或添加 * @param collectionName * 集合名称 * @param condition * 条件 * @param doc * 字段 */ public static void upsert(String collectionName, DBObject condition, DBObject doc) { try { DBCollection collection = MongoConnect.getInstance().getDB() .getCollection(collectionName); collection.update(condition, doc, true, false); } catch (Exception e) { log.log(Level.WARNING, "", e); } } /** * 删除文档 * @param collectionName * 集合名称 * @param condition * 条件 */ public static void remove(String collectionName, DBObject condition) { try { DBCollection collection = MongoConnect.getInstance().getDB() .getCollection(collectionName); collection.remove(condition); } catch (Exception e) { log.log(Level.WARNING, "", e); } } /** * 查询 * @param collectionName * 集合名称 * @param condition * 查询条件 * @return */ public static List<DBObject> find(String collectionName, DBObject condition) { List<DBObject> map = new ArrayList<DBObject>(); try { DBCollection collection = MongoConnect.getInstance().getDB() .getCollection(collectionName); DBCursor result = collection.find(condition); while (result.hasNext()) { DBObject ob = result.next(); map.add(ob); } } catch (Exception e) { log.log(Level.WARNING, "", e); } return map; } /** * 查询 * @param collectionName * 集合名称 * @param condition * 查询条件 * @param keys * 查询字段 * @return */ public static List<DBObject> find(String collectionName, DBObject condition, DBObject keys) { List<DBObject> map = new ArrayList<DBObject>(); try { DBCollection collection = MongoConnect.getInstance().getDB() .getCollection(collectionName); DBCursor result = collection.find(condition, keys); while (result.hasNext()) { DBObject ob = result.next(); map.add(ob); } } catch (Exception e) { log.log(Level.WARNING, "", e); } return map; } /** * 查询集合中的所有文档 * @param collectionName * 集合名称 * @return */ public static DBCollection getConection(String collectionName) { DBCollection collection = MongoConnect.getInstance().getDB() .getCollection(collectionName); return collection; } // 保存用户图片 public static boolean saveUserPic(String filename, String file, String account) { try { GridFS gfs = new GridFS(MongoConnect.getInstance().getDB(), IM_USERPIC); GridFSInputFile input = gfs.createFile(file); input.setFilename(filename); input.put("account", account); input.put("lastupdate", System.currentTimeMillis()); input.save(); } catch (Exception e) { log.log(Level.WARNING, "", e); return false; } return true; } // 保存用户图片 public static boolean saveUserPic(String filename, File file, String account) { try { GridFS gfs = new GridFS(MongoConnect.getInstance().getDB(), IM_USERPIC); GridFSInputFile input = gfs.createFile(file); input.setFilename(filename); input.put("account", account); input.put("lastUpdate", System.currentTimeMillis()); input.save(); } catch (Exception e) { log.log(Level.WARNING, "", e); return false; } return true; } // 获取图片的数据流 public static void getPicStream(String account, String filename, OutputStream out) { try { GridFS gfs = new GridFS(MongoConnect.getInstance().getDB(), IM_USERPIC); DBObject con = new BasicDBObject(); con.put("account", account); con.put("filename", filename); GridFSDBFile output = gfs.findOne(con); output.writeTo(out); } catch (Exception e) { log.log(Level.WARNING, "", e); } } // 删除图片 public static void deletePic(String account, String filename) { try { GridFS gfs = new GridFS(MongoConnect.getInstance().getDB(), IM_USERPIC); DBObject con = new BasicDBObject(); con.put("account", account); con.put("filename", filename); gfs.remove(con); } catch (Exception e) { log.log(Level.WARNING, "", e); } } // 删除图片 public static void deletePic(DBObject doc) { try { GridFS gfs = new GridFS(MongoConnect.getInstance().getDB(), IM_USERPIC); gfs.remove(doc); } catch (Exception e) { log.log(Level.WARNING, "", e); } } // 保存文件 public static boolean saveFile(String account, String fileId, File file, String collection) { try { GridFS gfs = new GridFS(MongoConnect.getInstance().getDB(), collection); GridFSInputFile input = gfs.createFile(file); input.setFilename(fileId); input.put("account", account); input.put("lastupdate", System.currentTimeMillis()); input.save(); } catch (Exception e) { log.log(Level.WARNING, "", e); return false; } return true; } // 保存文件 public static boolean saveFile(String account, String fileId, InputStream in, String collection) { try { GridFS gfs = new GridFS(MongoConnect.getInstance().getDB(), collection); GridFSInputFile input = gfs.createFile(in); input.setFilename(fileId); input.put("account", account); input.put("lastupdate", System.currentTimeMillis()); input.save(); } catch (Exception e) { log.log(Level.WARNING, "", e); return false; } return true; } // 保存共享文件夹 public static boolean saveShareForder(String fileId, String account, String fileName, String creator, InputStream in, String collection) { try { GridFS gfs = new GridFS(MongoConnect.getInstance().getDB(), collection); GridFSInputFile input = gfs.createFile(in); input.setFilename(fileId); input.put("account", account); input.put("lastupdate", System.currentTimeMillis()); input.put("creator", creator); input.put("displayname", fileName); input.save(); } catch (Exception e) { log.log(Level.WARNING, "", e); return false; } return true; } // 获取共享文件夹的length public static long getShareForderLength(String fileId, String account, OutputStream out, String colletion) { try { GridFS gfs = new GridFS(MongoConnect.getInstance().getDB(), colletion); DBObject con = new BasicDBObject(); con.put("account", account); con.put("filename", fileId); GridFSDBFile output = gfs.findOne(con); return output.getLength(); } catch (Exception e) { log.log(Level.WARNING, "", e); return 0; } } // 获取文件的数据流 public static void getFileStream(String account, String filename, OutputStream out, String colletion) { try { GridFS gfs = new GridFS(MongoConnect.getInstance().getDB(), colletion); DBObject con = new BasicDBObject(); con.put("account", account); con.put("filename", filename); GridFSDBFile output = gfs.findOne(con); output.writeTo(out); } catch (Exception e) { log.log(Level.WARNING, "", e); } } // 删除文件 public static void deleteFile(String account, String filename, String colletion) { try { DBObject con = new BasicDBObject(); con.put("account", account); con.put("filename", filename); GridFS gfs = new GridFS(MongoConnect.getInstance().getDB(), colletion); gfs.remove(con); } catch (Exception e) { log.log(Level.WARNING, "", e); } } // 删除文件 public static void deleteFile(DBObject doc, String collection) { try { GridFS gfs = new GridFS(MongoConnect.getInstance().getDB(), collection); gfs.remove(doc); } catch (Exception e) { log.log(Level.WARNING, "", e); } } }
相关文章推荐
- python操作mongodb数据库
- mongodb--c# 插入数据效率
- MongoDB 数据库命令操作
- MongoDB----在Mac下配置安装教程
- MongoDB学习笔记一
- 8天学通MongoDB——第八天 驱动实践
- 8天学通MongoDB——第七天 运维技术
- 8天学通MongoDB——第六天 分片技术
- 8天学通MongoDB——第五天 主从复制
- 8天学通MongoDB(mark)
- 8天学通MongoDB——第四天 索引操作
- windows下mongodb安装与使用整理
- mongodb删除数据 报 E QUERY Error: remove needs a query 的错误
- 8天学通MongoDB——第三天 细说高级操作
- 在 Win8 下安装 MongoDB
- MongoDB对文件的增、删、查
- java中使用mongodb的几种方式
- 基于Nodejs+express4+Mongodb+Angularjs建立web项目
- Node.js + Express + Mongodb 开发搭建个人网站(三)
- MongoDB 分片