Mi pregunta: tengo mongodb instalado en el servidor ubuntu y tiene varias bases de datos y quiero conectarme a mongodb instalado en el servidor y obtener todas las bases de datos (nombre de las bases de datos, colecciones de cada base de datos) y realizar operaciones de búsqueda en todas las bases de datos. Nota: no sabía los nombres de la base de datos.
No funcionará fuera de la caja. Si incluye el proyecto inicial spring-boot mongodb, buscará la propiedad 'spring.data.mongodb.uri' para conectarse a una única base de datos y, si no la encuentra, intentará conectarse a 'localhost: 27017'. Esta única base de datos se utilizará automáticamente para todos los repositorios de datos de Spring.
Puede agregar beans MongoClient adicionales para diferentes bases de datos, pero necesitará algo de trabajo para conectar diferentes repositorios de datos de Spring a esos beans diferentes.
Y si desea trabajar con un conjunto dinámico de bases de datos, es decir, cuando no sabe qué bases de datos o cuántas, no puede trabajar con MongoClients fijos como Spring Beans de todos modos. Necesitará algún tipo de fábrica que cree múltiples beans MongoClient en función de la cantidad de bases de datos y múltiples beans SearchRepository conectados a cada uno de esos beans MongoClient.
Depende de la complejidad de su proyecto, pero para este caso de uso no usaría Spring Data en absoluto, sino que me ceñiría a la API del cliente MongoDB Java:
Map<String, MongoClient> clientsPerDatabase = new HashMap<>(); // Setup MongoClient mongoClient = new MongoClient(/* default database */); MongoCursor<String> dbsCursor = mongoClient.listDatabaseNames().iterator(); while(dbsCursor.hasNext()) { String databaseName = dbsCursor.next(); if (!"admin".equals(databaseName)) { clientsPerDatabase.put(databaseName, new MongoClient(...+databaseName); } } // Query for(MongoClient client: clientsPerDatabase.values()){ ... }Configuraría la aplicación Spring Boot con acceso de administrador a la base de datos y luego usaría consultas nativas para recuperar información sobre todas las bases de datos, esquemas, etc.