【发布时间】:2018-08-20 23:11:42
【问题描述】:
我在 MongoDB Atlas 中创建了一个集群,但似乎无法向其中写入数据。
const uri = "mongodb+srv://myUser:myPass@myDB-4myav.mongodb.net/portfolio";
我有这个作为我要连接的uri,每次我尝试写入数据库时,我都会收到这个错误:
{ MongoError: 管理员未授权执行命令 { insert: “用户”,文档:[[{name Daniel} {_id ObjectIdHex("5aa6d7d6396deb25844ccb52")} {__v 0}]], 排序: false }
我已经读到我需要创建一个具有“root”角色的管理员用户,但是当我使用 mongo shell 连接到我的数据库并尝试创建它时,我得到了这个:
错误:无法添加用户:管理员未授权执行命令
所以基本上我没有可以写入我的数据库的用户。
我还尝试在 MongoDB Atlas 网站(当然对于我的集群)上创建一个具有所有可能角色的用户,然后通过 mongo shell 与之连接,但这也失败了。
总结一下:我在 MongoDB Atlas 上创建了一个新集群。如何向其写入数据?
提前致谢,如果我遗漏了一些简单而愚蠢的东西,请随时指出。
【问题讨论】:
-
您需要通过 Atlas (docs.atlas.mongodb.com/security-add-mongodb-users) 管理用户,并创建一个具有“读取和写入任何数据库”角色的用户帐户(或使用高级选项获得更精细的权限)。
-
我已经做到了。更妙的是,我还注册了所有可能的角色的帐户,但我仍然被拒绝。
-
啊!该错误表明您的代码正在尝试将文档插入
admin数据库,该数据库是为用户和角色信息保留的系统数据库。在您的连接字符串中您打算使用portfolio,但srv连接字符串不支持指定数据库,因此您需要在连接后更改为该数据库。有关解决方法,请参阅 github.com/Automattic/mongoose/issues/6106。
标签: mongodb mongoose mongodb-atlas