mongo
客户端可以使用标准URI连接:
mongo mongodb://<dbuser>:<dbpassword>@<server>:<port>/<db>
但是,mongodump
似乎需要一种笨拙的语法将其分解为不同的参数:
mongodump -u dbuser -p dbpassword -h server -p port -d db ...
是否有一种快速简便的方法将URI传递给mongodump
?
答案 0 :(得分:6)
答案:2020年5月15日
我知道这是一个较晚的答案,但是它解决了我的问题。
要使用URI
转储,请执行以下操作:
mongodump --uri=[uri]/[db]
其中:
因此在此人工示例中,将是这样的:
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
选项已添加到其他工具中,例如mongoexport
,mongoimport
和mongorestore
。
答案 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