[英]Write stream into mongoDB in Java
我有一個文件存儲在mongoDB中。 我想要的是避免加載整個文件(可能是幾MB),而我想打開流並將其指向mongoDB以保持寫操作的性能。 我不介意將內容存儲在base64編碼的byte []中。
之后我想在讀取文件時也這樣做,即不要將整個文件加載到內存中,而是在流中讀取它。
我目前正在使用帶有Vertx服務器的hibernate-ogm,但是如果它有效地服務於原因我可以切換到不同的api。
我想實際存儲一個包含多個字段和多個附件的文檔。
您可以使用GridFS 。 特別是當您需要存儲更大的文件(> 16MB)時,這是推薦的方法:
File f = new File("sample.zip");
GridFS gfs = new GridFS(db, "zips");
GridFSInputFile gfsFile = gfs.createFile(f);
gfsFile.setFilename(f.getName());
gfsFile.setId(id);
gfsFile.save();
或者,如果你有一個InputStream in
:
GridFS gfs = new GridFS(db, "zips");
GridFSInputFile gfsFile = gfs.createFile(in);
gfsFile.setFilename("sample.zip");
gfsFile.setId(id);
gfsFile.save();
您可以使用GridFS.find
方法之一加載文件:
GridFSDBFile gfsFile = gfs.findOne(id);
InputStream in = gfsFile.getInputStream();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.