使用mongodump和标准的Mongo URI

时间:2017-09-15 09:42:59

标签: mongodb database-backups

mongo客户端可以使用标准URI连接:

mongo mongodb://<dbuser>:<dbpassword>@<server>:<port>/<db>

但是,mongodump似乎需要一种笨拙的语法将其分解为不同的参数:

mongodump -u dbuser -p dbpassword -h server -p port -d db ...

是否有一种快速简便的方法将URI传递给mongodump

5 个答案:

答案 0 :(得分:6)

答案:2020年5月15日

我知道这是一个较晚的答案,但是它解决了我的问题。
要使用URI转储,请执行以下操作:

mongodump --uri=[uri]/[db]

其中:

  • uri是您的URI(例如 mongodb + srv:// john:xxxxxxxxxxxxxxx@cluster0-jdtjt.mongodb.net
  • db是您要转储的数据库(例如 sales

因此在此人工示例中,将是这样的:

mongodump --uri=mongodb+srv://john:xxxxxxxxxxxxxxx@cluster0-jdtjt.mongodb.net/sales

因此,如果这确实不起作用,请编辑文件/etc/resolv.conf并将nameserver的值更改为例如8.8.8.8,像这样:

# This file is managed by man:systemd-resolved(8). Do not edit.
#
# This is a dynamic resolv.conf file for connecting local clients to the
# internal DNS stub resolver of systemd-resolved. This file lists all
# configured search domains.
#
# Run "systemd-resolve --status" to see details about the uplink DNS servers
# currently in use.
#
# Third party programs must not access this file directly, but only through the
# symlink at /etc/resolv.conf. To manage man:resolv.conf(5) in a different way,
# replace this symlink by a static file or a different symlink.
#
# See man:systemd-resolved.service(8) for details about the supported modes of
# operation for /etc/resolv.conf.

# nameserver 127.0.0.53
nameserver 8.8.8.8
options edns0

现在应该可以了。

答案 1 :(得分:4)

在MongoDB 3.4.6的次要版本中添加了--uri选项。这在JIRA问题TOOLS-1587中被引用。

在MongoDB 3.6发布之前,它实际上没有获得官方文档,但它是now in the manual page

  

- uri
   3.4.6版中的新功能。

     

为要连接的mongod指定可解析的URI连接字符串。

     

以下是标准URI连接方案:

mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]
     

有关此字符串组件的详细说明,请参阅Connection String URI Format文档。

相同的--uri选项已添加到其他工具中,例如mongoexportmongoimportmongorestore

答案 2 :(得分:1)

一个简单易懂的字符串

mongodump --uri='mongodb://...url/...db-name' --out $(pwd)

mongodump --uri='mongodb+srv://...url/...db-name' --out $(pwd)

根据您的实现,将转储位于$(url)的$(db-name)整个数据库,并将其内容放入当前工作目录$(pwd)

答案 3 :(得分:0)

即使提供了uri选项,您仍然需要提供db选项。当db选项与uri选项“不兼容”时,https://docs.mongodb.com/manual/reference/program/mongorestore/上的文档不正确。如果不同时提供db选项和uri选项,则对于要还原的每个.bson文件,都会出现don't know what to do with file错误。我在ubuntu和Mac osx上使用mongorestore版本3.6.9进行了测试。

答案 4 :(得分:0)

轻松获得转储并立即恢复整个数据库且丢失任何数据的简便步骤

在本地计算机上转储

mongodump --uri "mongodb+srv://username:password@dbexmplae-fsddf.igt.mongodb.net/dbname" --out "C:\databaseDump"

**找到转储的文件夹并还原到本地数据库**

mongorestore --db dbname C:\databaseDump\dbname

还原到远程数据库

mongorestore --uri "mongodb+srv://username:password@dbexmplae-fsddf.igt.mongodb.net/dbname" --db dbname C:\databaseDump\dbname