发布于 2026-01-06 3 阅读
0

MongoDB shell 命令(运行在 Docker 上)入门

MongoDB shell 命令(运行在 Docker 上)入门

图片来自Unsplash用户XPS

本教程将向您展示如何入门并深入了解 MongoDB。我创建这份速查表是因为我需要在一个使用 MongoDB 的项目中工作,而以下步骤让我对 MongoDB 的工作原理有了大致的了解。当然,MongoDB 的功能远不止这些,但这里我只重点介绍了如何创建 Docker 容器、数据库、集合、文档、添加用户、执行一些查询、导出和恢复数据库。

我决定使用 Docker,因为这样更容易启动系统,并且在进行一些测试后清理系统也更方便。

创建和访问容器

  • $ docker run -d -p 27017:27017 --name MONGO_CONTAINER mongo:latest: 以分离模式(在后台运行)运行 MongoDB 容器。

  • $ docker ps列出所有正在运行的实例。MONGO_CONTAINER容器应该正在运行。

  • $ docker exec -it MONGO_CONTAINER mongo:直接在 shell 中执行MONGO_CONTAINERmongo中的命令。您也可以运行 `.`并执行后续操作$ docker exec -it MONGO_CONTAINER bash$ mongo

创建数据库、集合和项目

  • $ use dbTest创建一个名为dbTest 的数据库

  • $ db.createCollection('myFirstCollection')创建一个名为myFirstCollection的集合

  • $ db.myFirstCollection.insert({item: "card1", qty: 10}):在myFirstCollection集合中添加一个文档

  • $ db.myFirstCollection.insert({item: "card2", qty: 20})在myFirstCollection集合中添加第二个文档

  • $ db.myFirstCollection.find(): 选择myFirstCollection集合中的文档。它应该显示具有该_id属性的两个已创建文档。db.collection.find () 引用

  • $ db.myFirstCollection.find({ item: "card1" })它只返回属性itemcard1.

  • $ db.myFirstCollection.find({ qty: { $gt: 4 } }):它返回所有qty属性大于的文档4,在本例中,即所有文档。

  • $ db.myFirstCollection.find({ qty: { $gt: 14 } }):它返回所有qty属性大于的文档14,在我们的例子中,只有card2

退出 MongoDB Shell 并再次访问

  • $ exit:退出 Docker MongoDB shell。

  • $ docker stop MONGO_CONTAINER:停止MONGO_CONTAINER

  • $ docker ps检查MONGO_CONTAINER是否未运行。

  • $ docker start MONGO_CONTAINER重新启动MONGO_CONTAINER

  • $ docker exec -it MONGO_CONTAINER mongo再次访问。

  • $ show dbs列出所有数据库。

  • $ use dbTest:使用dbTest

  • $ db.myFirstCollection.find()检查创建的文档是否仍然存在。

创建用户

  • $ show roles列出您可以授予新用户的所有角色。

  • $ db.createUser({ user: "newUser", pwd: "123123123", roles: [{ role: "readWrite", db: "dbTest" }] })创建一个名为newUser的新用户。

  • $ show users列出所有用户。

  • $ exit: 出口。

使用特定用户进行访问

  • $ docker exec -it MONGO_CONTAINER mongo --username newUser --password 123123123 --authenticationDatabase dbTest使用新用户进行访问。

  • $ db.runCommand({connectionStatus : 1})检查当前用户

  • $ db.myFirstCollection.find()检查newUser是否可以查询文档。

  • $ exit: 出口。

转储和恢复

完整参考资料请点击此处。

  • $ docker exec MONGO_CONTAINER sh -c "mongodump --db dbTest --archive" > db.dump: dump dbTest。如果省略--db dbTest,则会导出所有数据库。

  • $ docker run -d -p 27018:27017 --name MONGO_CONTAINER_2 mongo:latest创建新的 MongoDB 容器。

  • $ docker exec -i MONGO_CONTAINER_2 sh -c "mongorestore --db dbTest --archive" < db.dump:在MONGO_CONTAINER_2容器中恢复dbTest 。

  • $ use dbTest:使用dbTest

  • $ db.myFirstCollection.find()检查文档是否在新 MongoDB 实例中。

  • $ exit: 出口。

清除

  • $ docker stop MONGO_CONTAINER MONGO_CONTAINER_2停止两个容器。

  • $ docker ps -a检查所有实例,即使是已停止的实例。

  • $ docker rm MONGO_CONTAINER MONGO_CONTAINER_2移除这两个容器。

  • $ docker ps -a检查 MongoDB 实例是否已被删除。

结论

或许你不会在生产项目中以这种方式使用 MongoDB,但这可以作为理解 MongoDB 引擎基础知识的循序渐进的说明。希望你喜欢 :)

文章来源:https://dev.to/pedroarantes/mongodb-shell-commands-running-on-docker-101-1l73