Write stream into mongoDB in Java

感情迁移 提交于 2020-01-14 19:46:10

问题


I have a file to store in mongoDB. What I want is to avoid loading the whole file (which could be several MBs in size) instead I want to open the stream and direct it to mongoDB to keep the write operation performant. I dont mind storing the content in base64 encoded byte[].

Afterwards I want to do the same at the time of reading the file i.e. not to load the whole file in memory, instead read it in a stream.

I am currently using hibernate-ogm with Vertx server but I am open to switch to a different api if it servers the cause efficiently.

I want to actually store a document with several fields and several attachments.


回答1:


You can use GridFS. Especially when you need to store larger files (>16MB) this is the recommended method:

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();

Or in case you have an InputStream in:

GridFS gfs = new GridFS(db, "zips");
GridFSInputFile gfsFile = gfs.createFile(in);
gfsFile.setFilename("sample.zip");
gfsFile.setId(id);
gfsFile.save();

You can load a file using one of the GridFS.find methods:

GridFSDBFile gfsFile = gfs.findOne(id);
InputStream in = gfsFile.getInputStream();


来源:https://stackoverflow.com/questions/36151868/write-stream-into-mongodb-in-java

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!