java中MongoDB的简单应用实例

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是数据库中集合的名字。看看上传成功后数据库的位置。如下:
java中MongoDB的简单应用实例_第1张图片

当然这仅仅是初步的使用。关于mongoDB在项目中的应用及其原理性的知识我们随着日后学习和使用的深入,再进行详细的介绍。

你可能感兴趣的:(mongodb,上传文件)