我在此博客之后设置了MongoDB docker容器: https://medium.com/@kristaps.strals/docker-mongodb-net-core-a-good-time-e21f1acb4b7b
当我运行.net core应用程序时,保存一个待办事项,我设法对其进行查询,似乎一切正常(创建了todo集合,创建了db,保存了todo)。但是,当我使用“ docker exec -it mongodb bash”访问mongo db容器并尝试使用“ show dbs”获取dbs时,它将检索到空列表。此外,此docker compose启动了mongo express容器,该容器也未列出新的数据库和集合。你知道会是什么问题吗?
欢呼
答案 0 :(得分:8)
您可能已启用身份验证(用户名和密码)。这意味着您必须先在外壳中进行身份验证,然后才能列出数据库。
这是可完成的操作(为Google员工添加了额外步骤):
$ docker ps // list images
IMAGE
my-mongodb-container
$ docker exec -it my-mongodb-container bash
// -it is a flag for 'interactive terminal', bash is the shell we'll use
root@example:/# mongo
// enter mongodb shell
> use admin
// switched to db admin
> db.auth("username", "password");
// 1
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
mydb 0.000GB
> use mydb
// switched to db mydb
您现在可以在mongodb实例中运行mongodb shell命令-这样“显示集合”之类的东西就可以使用。
希望对某人有帮助!这些东西有时非常不透明:)