Java MongoDB 给GridFS中添加文件时添加额外参数字段

java小白又来了,哈哈

这次记录操作mongodb的GridFS库

在插入文件后,同时给该Document添加其它字段,比如过期时间字段,

直接上代码示例:

/**
     * 上载文件到MongoGridFS服务器
     * @param mac
     * @param filenames 文件路径集合(d:\77\77\hello.doc)
     * @param expireat 文件过期时间
     * @return
     */
    public static boolean uploadFilesByNames(MongoAttachConnect mac, Set filenames,Date expireat){


        //获得MongoClient对象
        MongoClient mongoClient = MongoClientBuild.GetMongoAttachClient(mac);

        //获得MongoDatabase对象
        MongoDatabase db = mongoClient.getDatabase(mac.BaseName);

        AtomicBoolean isOK = new AtomicBoolean(true);

        GridFSBucket gridFS = GridFSBuckets.create(db);

        // Create some custom options
        GridFSUploadOptions options = new GridFSUploadOptions();

        filenames.forEach(filename->{

            File f =new File(filename);

            if(!f.exists()){
                isOK.set(false);
                return;
            }

            try {
                //获取文件名
                String flame = f.getName();
                //获取文件名类型 .pdf
                String fileTye=flame.substring(flame.lastIndexOf("."),flame.length());
                //定义输入流
                FileInputStream fileInputStream=new FileInputStream(f);

                //设置除filename以为的其他信息(此处生成的是子文档字段)
                //不需要可以不用设置
                Document metadata = new Document();
                metadata.append("contentType", fileTye);
                options.metadata(metadata);

                //上传
                gridFS.uploadFromStream(flame, fileInputStream,options);

                /*更新添加过期字段 - 非子文档字段*/
                //注意update文档里要包含"$set"字段
                Document update = new Document();
                update.append("$set", new Document("expireAt", expireat));
                //查找到刚刚新增得附件,然后进行更新过期字段
                db.getCollection("fs.files").updateOne(Filters.eq("filename",flame),update);

            } catch (FileNotFoundException e) {
                e.printStackTrace();
            }

        });

        return isOK.get();
    }

 

你可能感兴趣的:(java-Mongodb)