Vis*_*was 6 java mongodb gridfs
我正在使用MongoDB 3.2和Java 1.8版本以及mongo-java驱动程序。我已将图像保存在数据库中。我能够保存图像,读取图像并读取所有图像。现在我想更新GridFS中的图像。如果图像名称相同,我想覆盖图像。当我尝试用相同的名称保存图像时,我得到了两个图像。我正在使用以下代码保存图像。
GridFSBucket gridFSBucket = GridFSBuckets.create(database, imageCollection);
InputStream streamToUploadFrom = new FileInputStream(new File(imageFileName));
GridFSUploadOptions options = new GridFSUploadOptions()
.metadata(new Document("type", "brand").append("name", name).append("uuid", UUID.randomUUID().toString()));
ObjectId fileId = gridFSBucket.uploadFromStream(name, streamToUploadFrom, options)
Run Code Online (Sandbox Code Playgroud)
谁能指导我找到任何特定的文档链接/解决方法,以便我可以覆盖/更新图像。
小智 4
无法更新 GridFS 中的文件。每个文档实际上被分成块并且更新文件是不可能的。因此,我建议先删除要更新的文件,然后再导入新文件。
GridFSBucket gridFSBucket = GridFSBuckets.create(database, imageCollection);
GridFSBucket gridFSBucket = GridFSBuckets.create(database, imageCollection);
InputStream streamToUploadFrom = new FileInputStream(new File(new_image_file));
Document query = new Document("metadata.name", "image1");
MongoCursor<Document> cursor = database.getCollection(imagecollection+".files").find(query).iterator();
while (cursor.hasNext()) {
Document document = cursor.next();
Document metadata = document.get("metadata", Document.class);
ObjectId _id = document.getObjectId("_id");
gridFSBucket.delete(_id);
GridFSUploadOptions options = new GridFSUploadOptions().metadata(metadata);
ObjectId fileId = gridFSBucket.uploadFromStream("image1", streamToUploadFrom, options);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1658 次 |
| 最近记录: |