Mongodb Spring GridFsOperations API,用于使用自定义前缀存储在mongo中

Mongodb Spring GridFsOperations API,用于使用自定义前缀存储在mongo中,mongodb,spring-data,gridfs,Mongodb,Spring Data,Gridfs,我正在使用spring data for mongodb的GridFsOperations API将大文件分块存储在数据库中。这是我的密码: @Autowired private GridFsOperations gridOperation; public String save(InputStream inputStream, String contentType, String filename) { ... GridFSFile file = gridOperation.stor

我正在使用spring data for mongodb的GridFsOperations API将大文件分块存储在数据库中。这是我的密码:

@Autowired
private GridFsOperations gridOperation;

public String save(InputStream inputStream, String contentType, String filename) {
  ...
  GridFSFile file = gridOperation.store(inputStream, filename, metaData);
  return file.getId().toString();
}
代码工作正常,但它总是将文件存储在以前缀“fs”开头的集合中,这是mongodb中的默认值。有没有一种方法可以指定不同的前缀,以便我可以为不同类型的文件存储不同的文件和块

编辑:补充问题


如何指定块大小?对于不同类型的文件,是否建议使用不同的块大小,例如-2 mb用于图像文件,10 mb用于视频文件?

我使用GridFS和GridFSInputFile类而不是GridFSTemplate或GridFSOperations解决了这两个问题(在代码中配置块大小并使用不同的前缀)

我仍然想知道是否建议使用不同的块大小

对于任何想知道的人,以下是代码片段:

@Autowired
private MongoDbFactory dbFactory;

public String save(InputStream inputStream, String contentType, String filename, String username, String bucket) {
  DBObject metaData = ....(create metadata here)

  GridFS gridFS = new GridFS(dbFactory.getDb(), bucket);
    GridFSInputFile gridFSInputFile = gridFS.createFile(inputStream);
    gridFSInputFile.setMetaData(metaData);

    if(bucket.equals("photo")){
        gridFSInputFile.setChunkSize(1024000);  //1 mb
    } else if(bucket.equals("mp3")){
        gridFSInputFile.setChunkSize(10240000); //10 mb
    }

    try {
        gridFSInputFile.saveChunks();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    gridFSInputFile.save();

    return gridFSInputFile.getId().toString();
}

好的,我发现了如何直接使用GridFSTemplate而不是GridFSOperations来使用其他前缀,这似乎还在开发中。现在,我只想知道如何修复块大小,以及在mongo中强制使用特定大小是否有好处。如果Spring数据增强了它的GridFS API,以支持在存储文档时选择存储桶,那就太好了。