如何使用 mongosh 直接连接数据库

Jea*_*eri 0 mongodb mongo-shell nestjs

我的本地 mongodb 实例出现连接问题。并不是说它不起作用,而是有些东西不起作用,而我期望它们能起作用。

就我而言,我正在尝试使用 mongo 设置我的 NestJS 应用程序(本教程)。它在某个时候指出:

MongooseModule.forRoot('mongodb://localhost/blog')
Run Code Online (Sandbox Code Playgroud)

就我而言,这将是

MongooseModule.forRoot('mongodb://admin:admin@0.0.0.0:27017/blog')
Run Code Online (Sandbox Code Playgroud)

现在,无论我做什么,只要我在该字符串中包含数据库名称,它就不会连接。

mongosh我也可以重现这个问题

$> mongosh mongodb://admin:admin@0.0.0.0:27017/blog
Current Mongosh Log ID: 640c5eeaaf2a65c11a7dda25
Connecting to:      mongodb://<credentials>@0.0.0.0:27017/blog? directConnection=true&appName=mongosh+1.8.0
MongoServerError: Authentication failed.
Run Code Online (Sandbox Code Playgroud)

但是当我删除数据库名称时,它可以工作(也在我的 NestJs 应用程序中)。我对 Mongo 不太熟悉,所以也许我完全没有抓住要点,但我认为这应该可行,并且您必须先连接到数据库,然后才能执行任何操作。所以我的问题是,我在这里做错了什么?任何帮助将不胜感激!

Ric*_*ick 5

您可以像这样使用连接字符串:

mongosh "mongodb://user:pwd@localhost:27017/mybase" --authenticationDatabase admin

这将直接连接到您的数据库(mybase) ,并且您的用户 pwd 将在管理数据库上检查