当前位置: 首页 > news >正文

#MongoDB 快速上手

docker pull mongo
docker run -d --name my-mongo -p 27017:27017 mongo
docker exec -it my-mongo mongo
// 使用mongoDB 4.x版本
docker pull mongodb/mongodb-community-server:4.4.2-ubuntu2004-20230514T053842Z
docker run -d --name my-mongo -p 27017:27017 镜像id
docker exec -it my-mongo mongo

// 配置docker代理 下载镜像
[root@localhost docker.service.d]# pwd
/etc/systemd/system/docker.service.d
[root@localhost docker.service.d]# cat http-proxy.conf
[Service]
Environment=“HTTP_PROXY=http://192.168.xx.xx:7890”
Environment=“HTTPS_PROXY=http://192.168.xx.xx:7890”
Environment=“NO_PROXY=localhost,127.0.0.1”

🚪进入 Mongo Shell 后的第一步

你进入后会看到类似提示符:

>

说明已经进入 Mongo Shell,现在就可以操作数据库了。


🧾 1. 查看当前数据库

db

默认是 test 数据库。


🗂️ 2. 查看所有数据库

show dbs

如果没有手动插入数据,有些数据库可能不会显示。


🧱 3. 创建 / 切换数据库

use mydb

🔸注意:MongoDB 会在你首次向这个库写入数据时才真正创建它。


📂 4. 创建集合(类似表)

db.createCollection("users")

不过你也可以直接插入文档,MongoDB 会自动创建集合:

db.users.insertOne({ name: "Lily", age: 24 })

插入的文档是会被插入到你当前所在的数据库中的集合 users 中


📥 5. 插入数据

插入单条文档:

db.users.insertOne({ name: "Nova", age: 22 })

插入多条文档:

db.users.insertMany([{ name: "Qianjue", age: 25 },{ name: "Luna", age: 30 }
])

🔍 6. 查询数据

查询全部:

db.users.find()

美化显示:

db.users.find().pretty()

查询条件:

db.users.find({ age: { $gt: 24 } })  // 查找 age > 24 的用户

✏️ 7. 更新数据

db.users.updateOne({ name: "Lily" },{ $set: { age: 26 } }
)

❌ 8. 删除数据

删除一条:

db.users.deleteOne({ name: "Lily" })

删除多条:

db.users.deleteMany({ age: { $lt: 25 } })

🧾 9. 查看集合列表

show collections

🔐 10. 创建用户(可用于认证)

如果你还没设置好权限模式,创建用户可以这样:

use admin
db.createUser({user: "myuser",pwd: "mypassword",roles: [ { role: "readWrite", db: "mydb" } ]
})

📌 总结:常用命令清单

操作命令
查看数据库show dbs
切换数据库use dbname
查看集合show collections
插入文档insertOne / insertMany
查询文档find()
更新文档updateOne() / updateMany()
删除文档deleteOne() / deleteMany()
创建集合createCollection()
创建用户db.createUser(...)

🧠 你可以先练习上面这些基本操作,对 MongoDB 的“无模式”“JSON文档式结构”会有个感性认识。


MongoDB 创建用户命令

✅ 命令内容

use admindb.createUser({user: "myuser",pwd: "mypassword",roles: [ { role: "readWrite", db: "mydb" } ]
})

📖 一行一讲解


🔹 use admin

👉 表示切换到 admin 数据库。

MongoDB 的权限系统是和数据库绑定的,用户在哪个数据库下创建,就属于哪个数据库。

  • 一般来说:
    • 管理员账户建议放在 admin 数据库下(相当于超级管理员作用域)
    • 普通读写用户可以放在业务数据库下(如:mydb

💡 举一反三:

use mydb  // 如果你只想为 mydb 创建一个普通读写用户

🔹 db.createUser({...})

这是创建用户的标准命令,格式如下:

db.createUser({user: "<用户名>",pwd: "<密码>",roles: [ ... ]
})

✨ 参数详解:

参数名含义
user用户名
pwd密码
roles用户权限列表,支持多个权限组合

🔸 user: "myuser"

👉 创建的用户名是 "myuser"。你登录 MongoDB 时就可以这样连接:

mongosh -u myuser -p mypassword --authenticationDatabase admin

🔸 pwd: "mypassword"

👉 用户密码,配合用户名一起登录用。

⚠️ 不建议用过于简单的密码,生产环境要强密码 + TLS 连接。


🔸 roles: [ { role: "readWrite", db: "mydb" } ]

👉 这个数组定义了 用户的权限角色,每个角色有两个部分:

字段说明
role角色名,比如 readWritereaddbAdminroot
db授权作用的数据库
这行的含义是:

给这个用户 myuser,在 mydb 数据库上分配 readWrite 权限。


📚 常用权限角色参考表

角色名权限说明
read只读(查询数据)
readWrite读写(增删改查)
dbAdmin管理数据库结构(如建表、索引)
userAdmin管理用户(创建、修改权限)
root超级权限(所有数据库全部权限)

🎯 举一反三案例

🌟 创建只读用户:

use mydb
db.createUser({user: "reader",pwd: "123456",roles: [ { role: "read", db: "mydb" } ]
})

🌟 创建多权限用户:

use admin
db.createUser({user: "adminuser",pwd: "adminpass",roles: [{ role: "readWrite", db: "mydb" },{ role: "dbAdmin", db: "mydb" },{ role: "userAdmin", db: "admin" }]
})

🌟 创建超级用户:

use admin
db.createUser({user: "root",pwd: "123456",roles: [ { role: "root", db: "admin" } ]
})

🧠 总结理解图:

一个用户(user)└── 拥有多个角色(roles)└── 每个角色作用于某个数据库(db)└── 给定的权限类型(role: read / write / admin)

MongoDB 是基于 数据库级别的权限模型,不像 MySQL 那样跨库授权,权限是“在哪个库就对哪个库有效”。



http://www.mrgr.cn/news/97566.html

相关文章:

  • springcloud进阶
  • Python星球日记 - 第10天:模块与包
  • php调用大模型应用接口实现流式输出以及数据过滤
  • 原子操作(cpp atomic)
  • UE4初学笔记
  • Vue3+Vite+TypeScript+Element Plus开发-06.Header响应式菜单缩展
  • 2025 数字中国创新大赛数字安全赛道数据安全产业积分争夺赛初赛-东部赛区WriteUp
  • C++第14届蓝桥杯b组学习笔记
  • xv6-labs-2024 lab2
  • 深入解析嵌入式Linux系统架构:从Bootloader到用户空间 - 结合B站视频教学
  • 【Android Audio】Parameter Framework - pfw
  • LeetCode 解题思路 33(Hot 100)
  • JavaScript基础--20-JavaScript 预编译机制深度解析
  • 【CPP】内存泄漏详解
  • Ollama
  • spring boot + Prometheus + Grafana 实现项目监控
  • Android 学习之 Navigation导航
  • PyTorch 笔记
  • 考研单词笔记 2025.04.07
  • 分割回文串 复原IP地址(Java)