Используйте несколько БД Монго в одном приложении для одной модели и одного и того же хранилища - PullRequest
0 голосов
/ 24 сентября 2019

Мне нужно реализовать Spring boot - приложение MongoDb, в котором есть 2 БД mongo, которые имеют одинаковые имена и коллекции баз данныхИсходя из того, что пользователь делает запрос, мне нужно выбрать, выбирать ли данные из DB1 или DB2 (только разница в хосте mongo URI - IP).

Например, мне нужен какой-то способ создания 2-х mongoTemplates, таких как mTempA & mTempB вмой репозиторий и на основании некоторых условий используйте любой из шаблонов для выполнения запроса, как показано ниже:

@Repository
public class MyCustomRepository {

private Logger logger = LoggerFactory.getLogger(MyCustomRepository.class);

@Autowired
private MongoTemplateA mongoTemplateA;// Need to know if this is possible & how

@Autowired
private MongoTemplateB mongoTemplateB;// Need to know if this is possible & how

public List<MyModel> findByCriteria(MyRequest request) {
    List<MyModel> result;
    //Query query = <build query based on request>

    if (request.getUserType().equals("A")) {
        result = mongoTemplateA.find(query, MyModel.class);
    } else {
        result = mongoTemplateB.find(query, MyModel.class);
    }

    logger.debug("Result fetched with {} records", result.size());
    return result;
}   
}

Я не хочу иметь 2 отдельных репо (класса или интерфейсы) или разные модели для использования.Просто хотите иметь 2 разных mongoTemplates для инъекции в одном репо.

Возможно ли это?Если да, приведите пример кода.Я следовал ниже учебник: https://dzone.com/articles/multiple-mongodb-connectors-with-spring-boot

...