1 首先加载 MongoDB的jar包。下载Jar包链接
2然后进行相应的配置。如我当前项目是在web-pom.xml 的的节点下配置。
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>2.9.3</version>
</dependency>
下面写一个上传文件的最简单的实现。主要是体现mongoDB的使用方法。
/**
* @MethodName : uploadFile
* @Description : 上传文件
* @param file :文件,File类型
* @param id :唯一标示文件,可根据id查询到文件.必须设置
* @param dbName :库名,每个系统使用一个库
* @param collectionName:集合名,如果传入的集合名库中没有,则会自动新建并保存
* @param map:放入你想要保存的属性,例如文件类型(“congtentType”".jpg"),字符串类型,区分大小写,如果属性没有的话会自动创建并保存
*/
public void uploadFile(File file ,String id,String dbName,String collectionName,LinkedHashMap<String, Object> map){
//把mongoDB的数据库地址配置在外部。
try {
Mongo mongo =getMongo();
//每个系统用一个库
DB db= mongo.getDB(dbName);
System.out.println(db.toString());
//每个库中可以分子集
GridFS gridFS= new GridFS(db,collectionName);
// 创建gridfsfile文件
GridFSFile gridFSFile = gridFS.createFile(file);
//判断是否已经存在文件,如果存在则先删除
GridFSDBFile gridFSDBFile=getFileById(id, dbName, collectionName);
if(gridFSDBFile!=null){
deleteFile(id, dbName, collectionName);
}
//将文件属性设置到
gridFSFile.put("_id", id);
//循环设置的参数
if (map != null && map.size() > 0) {
for (String key : map.keySet()) {
gridFSFile.put(key, map.get(key));
}
}
//保存上传
gridFSFile.save();
} catch (Exception e) {
e.printStackTrace();
}
}
上述代码中用到的 getFileById方法,即根据id获取文件。
/**
* @MethodName : getFileById
* @Description : 根据Id获得文件
* @param id :文件Id
* @param dbName: 数据库名
* @param collectionName:集合名
* @return GridFSDBFile
*/
public GridFSDBFile getFileById(String id,String dbName,String collectionName){
GridFSDBFile gridFSDBFile=null;
try {
//获得mongoDB数据库连接。
Mongo mongo =getMongo();
//获得库
DB db= mongo.getDB(dbName);
//获得子集
GridFS gridFS= new GridFS(db,collectionName);
//获得文件
DBObject query=new BasicDBObject("_id", id);
gridFSDBFile=gridFS.findOne(query);
} catch (Exception e) {
e.printStackTrace();
}
//返回数据
return gridFSDBFile;
}
第一个代码段中调用到的deleteFile文件。
/**
* @MethodName : deleteFile
* @Description : 删除文件
* @param id:文件对应的id
* @param dbName:文件所在的库
* @param collectionName:文件所在的集合
*/
public void deleteFile(String id,String dbName,String collectionName){
try {
//获得mongoDB数据库连接。
Mongo mongo =getMongo();
//获得库
DB db= mongo.getDB(dbName);
//获得子集
GridFS gridFS= new GridFS(db,collectionName);
//删除文件
DBObject query=new BasicDBObject("_id", id);
gridFS.remove(query);
} catch (Exception e) {
e.printStackTrace();
}
}
调用的时候,直接调用我们写好的uploadFile类即可。其中dbName 是我们用到的数据库,collectionName是数据库中集合的名字。看看上传成功后数据库的位置。如下:
当然这仅仅是初步的使用。关于mongoDB在项目中的应用及其原理性的知识我们随着日后学习和使用的深入,再进行详细的介绍。