首次安装 MongoDB 或在 MongoDB Atlas 上启动新集群后,首先要解决的问题之一是如何连接到数据库,以便开始输入并查询数据。要连接到 MongoDB 集群,需要一个连接字符串。
MongoDB 连接字符串 是一段简短文本,它会指示 MongoDB 客户端如何连接到 MongoDB 集群。该 URL 可提供给各种工具,如 MongoDB Compass 和 MongoDB Shell,也可用于在一个 MongoDB 驱动程序 上构建的自己的软件,以指定 MongoDB 集群。
URL 可以包含各种信息,如组成集群的服务器(或如何查找该信息)、数据库用户名和密码,以及运行查询时使用的默认数据库名称,除非以其他方式覆盖了该名称。
有三类 MongoDB 连接字符串:MongoDB Atlas 连接字符串、运行在自己计算机上的实例 (localhost) 的连接字符串以及自托管集群的连接字符串。
下面我们将解释如何获取这些连接字符串。
在 MongoDB Atlas 网络界面 中找到要连接的集群,然后点击其名称旁边的“连接”按钮。在下一个屏幕中,选择您用于连接 MongoDB 的方法,然后系统会为集群提供合适的连接字符串。连接字符串旁边有一个小的“复制粘贴”按钮,会让操作更加轻松!
MongoDB 文档会提供有关 MongoDB Atlas 连接字符串 的更多信息。
请注意,如选择 MongoDB Shell 选项,系统会提供启动 mongosh 的完整命令行,而不仅仅是连接字符串。
连接字符串不完整。通常会有用户名和密码的占位符,用角括号包围,如下所示:
mongodb+srv://<username>:<password>@beyondthebasics.abcde.mongodb.net/test
您需要找到数据库用户的用户名和密码,或者创建一个新数据库用户来获取这些凭证。您可以使用 Atlas 网站左侧的“数据库访问”链接,然后点击“添加新数据库用户”按钮。
本地服务器的 MongoDB 连接字符串通常采用“mongodb://localhost:27017/
要获取自托管 MongoDB 副本集的连接字符串,需要知道副本集中服务器的主机名或 IP 地址,以及副本集的名称。
可以通过将单个服务器包含在连接字符串中来指定副本集的单个服务器,如下所示::
mongodb://<host1>:<port1>,<host2>:<port2>,<host3>:<port3>/<database>?replicaSet=<replicaSetName>
如果有一个名为“repl1”的副本集,由三台主机“192.168.10.1-3”组成,并在默认端口“27017”上运行,则连接字符串将如下所示::
mongodb://192.168.1.1:27017,192.168.1.2:27017,192.168.1.3:27017/<database>?replicaSet=repl1
SRV 连接字符串是一种以“mongodb+srv://”为前缀的连接(而不是仅以“mongodb://”为前缀)。所有 MongoDB Atlas 连接字符串都是 SRV 连接字符串,这使其更短且更易于使用。SRV 协议允许自动发现 MongoDB 副本集 或 分片集群 中的服务器,而无需指定单个服务器地址。
SRV 连接字符串确切工作原理的技术细节有点超出本文的介绍范围。幸运的是,我们有一篇博客文章— Here to SRV You with Easier Replica Set Connections — 如果您想了解所有相关信息,不妨看看。
要使用统一资源标识符 (URI) 连接 MongoDB,需要提供一个连接字符串,其中包括主机名、端口、数据库名称和身份验证凭证。
要设置 MongoDB 连接,需要为编程语言安装 MongoDB 驱动程序,使用相应的参数创建连接字符串,并使用驱动程序的连接方法与 MongoDB Server 建立连接。
要连接到 MongoDB,请从 Cloud Manager 检索主机名和端口信息,然后使用 MongoDB 客户端(例如 mongosh 或 MongoDB 驱动程序),接着使用 MongoDB Shell 中的 db.collection.find() 方法来查询集合中的文档。