MongoDb--初识

MongoDb初学者一个比较好的网站:http://www.runoob.com/mongodb/mongodb-create-database.html


一、java链接Mongo读取文件的例子:

public class MongoGridFSTest {

    private static MongoClient mongoClient = null;
    private static DB db = null;
    private static GridFS gridFS = null;

    private static String dbName = "360loan";

    public static void main(String[] args) throws UnknownHostException, Exception {
        mongoClient = new MongoClient("jira.360haojie.loan", 7952);
        db = mongoClient.getDB(dbName);
        gridFS = new GridFS(db);

        String file = "D:\\20170907185929.zip";
        if (!new File(file).exists()) {
            System.out.println("file is not exists.");
        }
        String fileName = "20170907185929.zip";
        //把文件保存到gridfs中,并以文件的md5值为id
        save(new FileInputStream(file), fileName, fileName);
        //据文件名从gridfs中读取到文件

        GridFSDBFile gridFSDBFile = getByFileName(fileName);
        if (gridFSDBFile != null) {
            System.out.println("filename:" + gridFSDBFile.getFilename());
            System.out.println("md5:" + gridFSDBFile.getMD5());
            System.out.println("length:" + gridFSDBFile.getLength());
            System.out.println("uploadDate:" + gridFSDBFile.getUploadDate());
            System.out.println("--------------------------------------");
            gridFSDBFile.writeTo(new FileOutputStream("D:\\20170907185929-temp.zip"));
        } else {
            System.out.println("can not get file by name:" + fileName);
        }
    }

    /**
     * 用给出的id,保存文件,透明处理已存在的情况
     * id 可以是string,long,int,org.bson.types.ObjectId 类型
     *
     * @param in
     * @param id
     */
    public static void save(InputStream in, Object id, String fileName) {
        DBObject query = new BasicDBObject("_id", id);
        GridFSDBFile gridFSDBFile = gridFS.findOne(query);
        if (gridFSDBFile != null) {
            gridFS.remove(gridFSDBFile);
        }
        GridFSInputFile gridFSInputFile = gridFS.createFile(in);
        gridFSInputFile.setId(id);
        gridFSInputFile.setFilename(fileName);
        //gridFSInputFile.setChunkSize();
        //gridFSInputFile.setContentType();
        //gridFSInputFile.setMetaData();
        gridFSInputFile.save();

    }

    /**
     * 据id返回文件
     *
     * @param id
     * @return
     */
    public static GridFSDBFile getById(Object id) {
        DBObject query = new BasicDBObject("_id", id);
        GridFSDBFile gridFSDBFile = gridFS.findOne(query);
        return gridFSDBFile;
    }

    /**
     * 据文件名返回文件,只返回第一个
     *
     * @param fileName
     * @return
     */
    public static GridFSDBFile getByFileName(String fileName) {
        DBObject query = new BasicDBObject("filename", fileName);
        GridFSDBFile gridFSDBFile = gridFS.findOne(query);
        return gridFSDBFile;
    }
}


猜你喜欢

转载自blog.csdn.net/szzt_lingpeng/article/details/77930140