现在不建议使用copydb,如何使用PHP复制MongoDB数据库

Car*_*dos 10 php mongodb

在MongoDB 4.2版copydb及其copyDatabase包装器中,已弃用。MongoDB手册建议我们现在应该使用mongodumpmongorestore。但是我使用PHP MongoDB驱动程序从PHP调用了copy命令,而dump和restore命令是需要从命令行运行的命令,并且没有任何PHP等效项。现在如何使用PHP复制数据库?

Raj*_*ora 3

您也可以使用“mongodump”和“mongorestore”,正如您提到的。在 PHP 中,您可以使用 shell_exec 来运行命令。例如:

$backUpCommand = "mongodump --archive='/tmp/mongodump-dev-db' --db=dev";
shell_exec($backUpCommand);

$restoreCommand = "mongorestore --archive='/tmp/mongodump-dev-db' --db=test --nsFrom='test.*' --nsTo='examples.*'";
shell_exec($restoreCommand);

Run Code Online (Sandbox Code Playgroud)

请注意 nsFrom 和 nsTo 是根据需要重命名命名空间。请在此处查看更多详细信息。

如果您想将转储复制到另一台主机,请尝试组合 mongorestore 的 --host 参数。因此,在这种情况下,您的恢复命令将是:

$restoreCommand = "mongorestore --host=mongodb1.example.net --port=27017 --username=user --password=$PSWD --authenticationDatabase=admin --archive='/tmp/mongodump-dev-db' --db=test";
shell_exec($restoreCommand);
Run Code Online (Sandbox Code Playgroud)