GridFsTemplate inserta datos en colecciones: fs.files y fs.chunks. ¿Hay alguna forma de hacer que GridFsTemplate use mis propias colecciones?
Por ejemplo, en mi proyecto, necesito volcar todos los archivos en archivos adjuntos.archivos y archivos adjuntos.trozos.
Puedo hacerlo usando solo GridFs como este:
DB mongoDB = mongoDbFactory.getDb(); GridFS fileStore = new GridFS(mongoDB, "attachment");pero me gustaría hacerlo @autowire GridFsTemplate, realizar operaciones como gridFsTemplate.store(file, filename) y debería volcar datos en mis propias colecciones.
Para poder autoconectarlo con un cubo predeterminado, puede definir un Bean para él en la configuración del cliente Mongo. Es algo parecido a esto:
Crear una clase de configuración->
@Configuration public class MongoConnectionConfig extends AbstractMongoClientConfiguration { //store this in application.properties file 'mongo.file-system-bucket.attachment=attachment' @Value("${mongo.file-system-bucket.attachment}") private String bucketAttachment; //store this in application.properties file 'mongo.file-system-bucket.image=image' @Value("${mongo.file-system-bucket.image}") private String bucketImage; @Autowired private MappingMongoConverter mongoConverter; @Bean(name = "gridFsTemplateAttachments") public GridFsTemplate gridFsTemplate() throws Exception { return new GridFsTemplate(mongoDbFactory(), mongoConverter, bucketAttachment); } @Bean(name = "gridFsTemplateImages") public GridFsTemplate gridFsTemplate() throws Exception { return new GridFsTemplate(mongoDbFactory(), mongoConverter, bucketImage); } }Ahora, para usar estos Beans, puede autoconectarlos en su DAO y trabajar con diferentes cubos según sus requisitos.
P.ej. ->
@Repository public class AssetTransactionsDAO implements AssetTransactionsInterface { @Autowired private GridFsTemplate gridFsTemplateImages; @Autowired private GridFsTemplate gridFsTemplateAttachments; @Override public String insertAttachment(AttachementModel attachment){ //do your stuff gridFsTemplateAttachments.store(.....) return ""; } }