mongodbアクセスピクチャファイル機能

3020 ワード

Mongodbは非関係型データベース(NoSql)であり、オブジェクト向けのアイデア(OOアイデア)がよく実現され、Mongo DBでは各レコードがDocumentオブジェクトである.Mongo DBの最大の利点は、すべてのデータ永続操作が開発者がSQL文を手動で作成する必要がなく、直接メソッドを呼び出すことでCRUD操作を簡単に実現できることです.
このブログでは、mongodbのストレージとファイルの読み取り方法について説明します.mongodbは、主にGridFSクラスを介してファイルを操作します.ストレージファイルは主にfsに格納され、fsはデータベースのデフォルトです.またGridFSはcollection集合とは無関係にデータベースと直接付き合っている.
MongoDBの文書構造はBJSON形式(BJSONフルネーム:Binary JSON)であり、BJSON形式自体がバイナリ形式のデータを保存することをサポートしているため、文書のバイナリ形式のデータを直接MongoDBの文書構造に保存することができる.ただし、1つのBJSONの最大長は4 Mを超えてはいけないため、1つのドキュメントに格納できる最大ファイルは4 Mを超えてはいけないことが制限されています.大容量ファイルへのアクセスをサポートするために、samusドライバは「GridFS」方式でサポートしています.メソッドコード:
/**
     *      
     * @param collectionName     
     * @param file    
     * @param fileid   id 
     * @param companyid      id 
     * @param filename     
     */
    public void SaveFile(String collectionName, File file, String fileid, String companyid, String filename) {
        try {
            DB db = mongoTemplate.getDb();
            //   fs    
            GridFS gridFS = new GridFS(db, collectionName);
            GridFSInputFile gfs = gridFS.createFile(file);
            gfs.put("aliases", companyid);
            gfs.put("filename", fileid);
            gfs.put("contentType", filename.substring(filename.lastIndexOf(".")));
            gfs.save();
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("         !!!");
        }
    }

    //     
    public GridFSDBFile retrieveFileOne(String collectionName, String filename) {
        try {
            DB db = mongoTemplate.getDb();
            //   fs    
            GridFS gridFS = new GridFS(db, collectionName);
            GridFSDBFile dbfile = gridFS.findOne(filename);
            if (dbfile != null) {
                return dbfile;
            }
        } catch (Exception e) {
            // TODO: handle exception
        }
        return null;
    }