MongoDB工具類:java操作對檔案的增刪查改
版權宣告:本文為博主原創文章,如需轉載,請標明出處。 https://blog.csdn.net/alan_liuyue/article/details/79199871
前言
1.MongoDB,是一個基於分散式檔案儲存的資料庫,是一個介於關聯式資料庫和非關聯式資料庫之間的產品,是非關聯式資料庫當中功能最豐富、最像關聯式資料庫的,它的特點是高效能、易部署、易使用,儲存資料非常方便。在實際的專案操作中,我們不僅能用來儲存各種複雜的資料型別,而且在儲存檔案方面的效能也尤為方便;
2.那麼,本片部落格則不去關注MongoDB的database、collection和document等資料型別儲存方面,將側重於MongoDB的檔案儲存;
3.以下是總結的一些較為簡潔實用的MongoDB的增刪查該的方法:
例項
import java.io.File;
import java.net.UnknownHostException;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.DBObject;
import com.mongodb.Mongo;
import com.mongodb.gridfs.GridFS;
import com.mongodb.gridfs.GridFSDBFile;
import com.mongodb.gridfs.GridFSInputFile;
/*
* mongoDB檔案增刪查工具類
* @author hqc
*
*/
public class PhotoMongoDBUtils {
private static String MONGODB_IP = "192.168.1.1";
private static int MONGODB_PORT = 27017;
private static String MONGODB_DB = "filedb";
/**
* 儲存檔案,返回mongodb的圖片訪問路徑
* @param filename 檔名
* @param file 檔案
* @throws Exception
*/
public static String saveFile(String filename,File file) throws Exception {
// 連線伺服器
Mongo mongo = new Mongo(MONGODB_IP, MONGODB_PORT);
// 連線資料庫
DB db = mongo.getDB(MONGODB_DB);
// 檔案操作是在DB的基礎上實現的,與表和文件沒有關係
GridFS gridFS = null;
gridFS = new GridFS(db);
GridFSInputFile mongofile = gridFS.createFile(file);
String uuid = UUID.randomUUID().toString().replaceAll("-", "");
String datetime = DateUtils.formatDate(new Date(), "yyyyMMddHHmmss");
String fileName = datetime +"_"+ filename;
// 可以再新增屬性
mongofile.put("uuid", uuid);
mongofile.put("filename",fileName);
mongofile.put("time",DateUtils.getDateTime());
// 儲存
mongofile.save();
String fileUrlPath = "http://"+MONGODB_IP+"/"+MONGODB_DB+"/"+fileName;
System.out.println("圖片訪問路徑:"+fileUrlPath);
return fileUrlPath;
}
/**
* 讀檔案,讀到磁碟上
*/
public static void readFile() throws Exception {
// 連結伺服器
Mongo mongo = new Mongo();
// 連線資料庫
DB db = mongo.getDB(MONGODB_DB);
GridFS gridFs = null;
gridFs = new GridFS(db);
// 查詢條件
DBObject query = new BasicDBObject();
// 查詢的結果:
List<GridFSDBFile> listfiles = gridFs.find(query);
GridFSDBFile gridDBFile = listfiles.get(0);
// 獲得其中的檔名
// 注意 : 不是fs中的表的列名,而是根據除錯gridDBFile中的屬性而來
String fileName = (String) gridDBFile.get("filename");
System.out.println("從Mongodb獲得檔名為:" + fileName);
File writeFile = new File("d:/" + fileName);
if (!writeFile.exists()) {
writeFile.createNewFile();
}
// 把資料寫入磁碟中
//gridDBFile.writeTo("d:/a.txt");
// 寫入檔案中
gridDBFile.writeTo(writeFile);
}
/**
* 儲存檔案
*/
public String saveFileToMongo(String mondb_ip,int mondb_port,String mongodb_db,String uploadLoclPath,String fuuid,Map<String,String> map) throws Exception {
// 連線伺服器
Mongo mongo = new Mongo(mondb_ip, mondb_port);
// 連線資料庫
DB db = mongo.getDB(mongodb_db);
System.out.println(mongo+":"+db);
// 檔案操作是在DB的基礎上實現的,與表和文件沒有關係
GridFS gridFS = null;
gridFS = new GridFS(db);
File readFile = new File(uploadLoclPath);
GridFSInputFile mongofile = gridFS.createFile(readFile);
//獲取原檔名
String oldFilename = uploadLoclPath.substring(uploadLoclPath.lastIndexOf("\")+1, uploadLoclPath.length());
// 可以再新增屬性
mongofile.put("filename",fuuid + "-" + oldFilename);//組合新的檔名儲存檔案
mongofile.put("name",map.get("name").toString());
mongofile.put("time",DateUtils.getDateTime());
// 儲存
mongofile.save();
return "";
}
/**
* 根據檔名,查詢獲取檔案
*/
public boolean findFileByFilename(String mondb_ip,int mondb_port,String mongodb_db,String filename) throws Exception{
boolean flag = false;
Mongo mongo = new Mongo(mondb_ip, mondb_port);
DB db = mongo.getDB(mongodb_db);
GridFS fs =new GridFS(db);
List<GridFSDBFile> list = fs.find(filename);
if(list.size()>0)
flag = true;
return flag;
}
/**
* 根據檔名刪除檔案
*/
public static void delFileByFilename(String filename) throws Exception{
Mongo mongo = new Mongo(MONGODB_IP, MONGODB_PORT);
DB db = mongo.getDB(MONGODB_DB);
GridFS fs =new GridFS(db);
fs.remove(filename);
}
/**
* 查詢出一個db資料庫裡面的所有檔案
*/
public static List<GridFSDBFile> query(String mondb_ip,int mondb_port,String mongodb_db,DBObject query) throws Exception{
Mongo mongo = new Mongo(mondb_ip, mondb_port);
DB db = mongo.getDB(mongodb_db);
GridFS fs =new GridFS(db);
List<GridFSDBFile> files = fs.find(query);
return files;
}
/**
* 根據查詢條件刪除對應檔案
*/
public static void delFileByDBObject(String mondb_ip,int mondb_port,String mongodb_db,DBObject query) throws Exception{
Mongo mongo = new Mongo(mondb_ip, mondb_port);
DB db = mongo.getDB(mongodb_db);
GridFS fs =new GridFS(db);
fs.remove(query);
}
/**
* 刪除對應db的所有檔案
*/
public static void delAllFile(String mondb_ip,int mondb_port,String mongodb_db) throws Exception{
Mongo mongo = new Mongo(mondb_ip, mondb_port);
DB db = mongo.getDB(mongodb_db);
GridFS fs =new GridFS(db);
DBObject query = new BasicDBObject();
List<GridFSDBFile> findList = fs.find(query);
System.out.println(findList.size());
//刪除全部
for (GridFSDBFile gridFSDBFile : findList) {
System.out.println(gridFSDBFile);
fs.remove(gridFSDBFile);
}
}
/**
* main方法測試
*/
public static void main(String[] args) throws Exception {
//刪除
String filename1 = "20170112102054-fire.jpg";
delFileByFilename(filename1);
//刪除所有
delAllFile(MONGODB_IP,MONGODB_PORT,MONGODB_DB);
}
總結
1.MongoDB作為菲關係型資料庫中的一種最像關係型資料庫的資料庫,很多人都比較喜歡用它結合關係型資料庫,以此來達到專案實踐的最優效果;
2.實踐出真知,每種方法都是一些小的工具類,有需要的可以直接複製這些方法,然後實用main方法逐一去測試;
3.方法都是經過實踐的,都是一些基礎的方法,程式猿可根據自己的專案需求去不斷深化這些方法,封裝形成對自己比較有效的MongoDB工具類;
相關文章
- MongoDB增刪改查操作MongoDB
- PHP操作MongoDB(增刪改查)PHPMongoDB
- node+express對本地檔案的增刪改查操作Express
- JavaAPI操作MongoDB--基本增刪改查JavaAPIMongoDB
- MongoDB的增刪改查MongoDB
- 使用express+mongoose對mongodb實現增刪改查操作ExpressMongoDB
- Java對txt檔案內容的增刪該查操作Java
- mongodb 基本增刪改查MongoDB
- Java實現簡單的增刪改查操作Java
- 自寫的使用PDO對mysql資料庫的增刪改查操作類MySql資料庫
- 第八天 Nodejs操作mongodb(增刪改查)NodeJSMongoDB
- MongoDB——簡單增、刪、改、查實踐MongoDB
- MongoDB基本增刪改查操作-基於Node.JS驅動MongoDBNode.js
- 關於mongodb資料庫的增刪改查MongoDB資料庫
- mysql資料增刪改查操作MySql
- MySQL基礎操作(增刪改查)MySql
- JS字串操作之增刪改查JS字串
- gRPC 的增刪改查系列之.proto檔案RPC
- 一步步學MongoDB之增,刪,改查等操作MongoDB
- Spring Boot 中使用 MongoDB 增刪改查Spring BootMongoDB
- 資料庫操作增刪改查模糊查資料庫
- 用thinkphp進行增刪改查的操作PHP
- 使用mybatis開發的增刪改查操作MyBatis
- Node.js(nodejs)對本地JSON檔案進行增、刪、改、查操作(輕車熟路)Node.jsNodeJSJSON
- jquery基本操作增刪改查有哪些?jQuery
- MyBatis框架搭建及增刪改查操作MyBatis框架
- Mapper三種形式、工具類以及簡單的增刪改查APP
- JSP實現servlet對資料庫的增刪查改操作JSServlet資料庫
- 關於dom4j對xml檔案實現增刪改創的操作XML
- 增刪改查
- MongoDB入門(介紹、安裝、增刪改查)MongoDB
- Go實現對MySQL的增刪改查GoMySql
- 使用Chatgpt編寫的PHP資料庫pdo操作類(增刪改查)ChatGPTPHP資料庫
- javascript基礎(class 類屬性的操作(增,刪,改,查))(四十五)JavaScript
- Larvel 操作 MongoDB(對內嵌陣列增刪改)MongoDB陣列
- 表的建立修改及增刪改查-DML操作
- 基於Koa(nodejs框架)對json檔案進行增刪改查NodeJS框架JSON
- layui的增刪改查UI