Копирование базы данных с использованием драйвера Java MongoDB 3.0

Я пытаюсь скопировать базу данных с удаленного хоста под управлением MongoDB v3.2 на локальный хост под управлением MongoDB v3.0 с помощью MongoDB Java Driver 3.0.

Используя оболочку, я легко добиваюсь этого, запустив:

db.copyDatabase("test", "test1", "104.xx.xx.21:27017", "admin", "xxxx")

Драйвер Java, похоже, не имеет copyDatabase команда, однако MongoDatabase интерфейс имеет runCommand метод, поэтому я подумал об использовании команды DB copydb. Но... эта команда может аутентифицироваться только на удаленном хосте, используя MONGODB-CR, в то время как MongoDB v3.0 и выше вынуждает меня создавать пользователей с механизмом SCRAM-SHA-1.

Моя последняя мысль состояла в том, чтобы вызвать команду оболочки с помощью драйвера, но, по-видимому, это возможно только при использовании устаревшей DB класс и не поощряется в новом коде...

Итак, какие у меня есть варианты?

1 ответ

Меня устраивает.

DB adminDB = mongo.getDB("admin");
DBObject cmdObj = new BasicDBObject("copydb", 1).append("fromhost", "localhost").append("fromdb", source).append("todb", destination);
CommandResult commandResult = adminDB.command(cmdObj);
Другие вопросы по тегам