Robo3t может выполнить поиск по базе данных, но JavaDriver не может - PullRequest
0 голосов
/ 19 июня 2019

Я пишу код Java для простого поиска в коллекции в MongoDB, используя Spring Boot с MongoRepository. Я получаю следующую ошибку:

com.mongodb.MongoQueryException: Query failed with error code 13 and error message 'not authorized on PatientStore to execute command { find: "patientEpisode", filter: { _id: "125903_57aa8715217063663d56b1fb" }, limit: 1, singleBatch: true }' on server db-mongodev.orgname.local:27017

Однако я могу выполнить следующий запрос из Robo3t с тем же паролем пользователя.

db.patientEpisode.find({_id : "125903_57a3782afc1ce5ab030f7535"}).limit(1);

Вот как я подключаюсь к MongoDB.

    @Bean
    public MongoDbFactory mongoDbFactory(){
    MongoRepository mongoRepository = new MongoRepository("PatientStore");
        logger.info("printing values again: {}",mongoRepository.getUsernameMongo());
        logger.info("mongoDatabase {}",mongoDatabase);
        logger.info("mongoRepository.getPasswordMongo().toCharArray():{}",mongoRepository.getPasswordMongo().toCharArray());
//        MongoCredential credential = MongoCredential.createCredential(mongoRepository.getUsernameMongo(),
//                mongoDatabase,mongoRepository.getPasswordMongo().toCharArray());
//        MongoCredential credential = MongoCredential.createScramSha1Credential(mongoRepository.getUsernameMongo(),mongoDatabase,mongoRepository.getPasswordMongo().toCharArray());
/*
        MongoCredential credential = MongoCredential.createScramSha1Credential("user1","patientstore","password1".toCharArray());
*/
        MongoClientURI clientURI = new MongoClientURI("mongodb://user1:password1@db-mongodev.orgname" +
                ".local:27017/patientstore" +
                "?authMechanism=SCRAM-SHA-1");
        MongoClient mongoClient = (MongoClient)Mongo.Holder.singleton().connect(clientURI);
/*
        MongoClient mongoClient = new MongoClient(new ServerAddress(mongoHost,mongoPort),credential,
                MongoClientOptions.builder().writeConcern(WriteConcern.W1.withJournal(true)).build());
*/
        return new SimpleMongoDbFactory(mongoClient,"PatientStore");
    }

Как видите, я использовал API MongoURI и MongoCredential для создания соединения, но в обоих случаях я получил ту же ошибку. Что может быть причиной этого?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...