我正在使用 laravel 5.5 和 mongodb 。我已成功将mongodb与本地系统连接。但是我试图与mongodb Atlas集群连接。我尝试了不同的方法,但是我需要一些详细的信息。 谁能解释一下DNS的格式是什么?
我正在关注 Connect laravel jenssegers to mongodb atlas cluster。
我从地图集集群中复制了dsn
这是我在连接内部的配置:
'mongodb_conn' => [
'driver' => 'mongodb',
'dsn'=>'mongodb+srv://username:password@hostname/test?retryWrites=true',
'database' => 'db_name',],
谢谢
答案 0 :(得分:0)
使用DSN格式,您可以指定用于通过单个URL与Mongo连接的所有参数和配置。这包括群集URL,副本URL,身份验证数据,端口和选项。要在Mongo Atlas中获取群集的DSN URL,请执行以下操作:
如果您选择我正在使用驱动程序3.4或更早版本,请在此处。 您将获得如下网址:
mongodb://<USER>:<PASSWORD>@shardname00.mongodb.net:27017,shardname01.mongodb.net:27017,shardname02.mongodb.net:27017/test?ssl=true&replicaSet=replicaName&authSource=admin&retryWrites=true
在此URL中,您只需要替换用户名和密码,其余的就可以保留。
如果您选择我正在使用驱动程序3.6或更高版本。 您将获得如下网址:
mongodb+srv://<USER>:<PASSWORD>@clusterName.mongodb.net/test?retryWrites=true
请注意+srv
开头。让驾驶员知道它是SRV记录,这一点很重要。
如果您的环境没有任何限制,则应该使用最新选项,因为这样可以为您提供更大的灵活性,因为以后再添加更多副本时无需更改配置。
从PHP连接时,您还应该在DSN URL的末尾添加以下参数:
serverSelectionTryOnce=false&serverSelectionTimeoutMS=30000
有关参数和连接字符串的更多信息,您可以在Mongo Docs
中找到