Не удаётся подключиться к MongoDB (Java)

209
13 июня 2018, 17:00

Пытаюсь подключить к своему Android-приложению удалённую базу MongoDB:

try {
            String str = "";
            MongoClientURI uri = new MongoClientURI("mongodb://byulent:mypass@ds231549.mlab.com:31549/mydb");
            MongoClient mongoClient = new MongoClient(uri);
            MongoDatabase db = mongoClient.getDatabase(uri.getDatabase());
            MongoCollection<Document> photos = db.getCollection("photos");
            FindIterable<Document> cursor = photos.find();
            Iterator i = cursor.iterator();
            while (i.hasNext()){
                Log.d("obj", i.next().toString());
            }
            //Toast.makeText(context, "Succesfully connected to MongoDB", Toast.LENGTH_SHORT).show();
        } catch (Exception e) {
            Log.e("mongodb", e.getMessage());
        }

Но при попытке получения данных из коллекции мне постоянно выводится следующая ошибка:

E/mongodb: Timed out after 30000 ms while waiting to connect. Client view of cluster state 
is {type=UNKNOWN, servers=[{address=ds231549.mlab.com:31549, type=UNKNOWN, state=CONNECTING,
exception={com.mongodb.MongoSocketOpenException: Exception opening socket}, caused by 
{java.net.SocketTimeoutException: failed to connect to ds231549.mlab.com/34.245.70.193 
(port 31549) after 20000ms}}]

Появляется ошибка на этапе действия итератора.

Поначалу грешил на необходимость подключения VPN для доступа к Mlab, но, когда подключился, ошибка не исчезла.

Из-за чего это происходит и как это исправить?

Answer 1

Возможная причина - несоответствие драйвера и версии mongo сервера, сравните какой JAR и какой фактически версии сервер? (Отсюда https://stackoverflow.com/a/38570463/5892568)

READ ALSO
удаление лишнего перед выводом в webview

удаление лишнего перед выводом в webview

Подскажите, есть такая задача: есть url страницы, содержащей много лишних элементов, как лучше их удалить перед выводом в webview или во время вывода...

212
Swipe Refresh Layout

Swipe Refresh Layout

Почему не останавливается анимация и как исправить?

212
доступ к ResultSet

доступ к ResultSet

Есть метод, где выполняется запрос:

241