Копирование базы данных с использованием драйвера 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);