3

mongoDB に保存するファイルがあります。私が望むのは、ファイル全体 (サイズが数 MB になる可能性があります) をロードするのを避けることです。代わりに、ストリームを開いて mongoDB に転送し、書き込み操作のパフォーマンスを維持したいと考えています。コンテンツを base64 でエンコードされたバイト [] に保存してもかまいません。

その後、ファイルの読み取り時に同じことをしたい、つまり、ファイル全体をメモリにロードするのではなく、ストリームで読み取ります。

現在、Vertx サーバーで hibernate-ogm を使用していますが、原因を効率的に処理する場合は、別の API に切り替えることができます。

複数のフィールドと複数の添付ファイルを含むドキュメントを実際に保存したいと考えています。

4

1 に答える 1

3

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();
于 2016-03-22T10:36:37.867 に答える