MongoDB shell 命令(运行在 Docker 上)入门
本教程将向您展示如何入门并深入了解 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" })它只返回属性item为card1. -
$ 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