作者介绍:简历上没有一个精通的运维工程师,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

数据库是一个系统(应用)最重要的资产之一,所以我们的数据库将从以下几个数据库来进行介绍。
MySQL
PostgreSQL
Redis
Etcd
我们从库(Database)、表(Collection,集合) 和数据(Document,文档) 这三个层面来系统地介绍MongoDB的增删改查(CRUD)操作。
传统关系型数据库 (如MySQL) | MongoDB |
|---|---|
数据库 (Database) | 数据库 (Database) |
表 (Table) | 集合 (Collection) |
行 (Row) | 文档 (Document) |
列 (Column) | 字段 (Field) |
库(Database)
//创建并切换到 myShop的数据库
use myShop # 显示所有非空数据库
show dbs
show databases删(Delete)- 删除数据库
// 首先切换到要删除的数据库
use myShop
// 然后删除它
db.dropDatabase()表(Collection,集合)
有显式和隐式两种方式。
隐式创建:直接向一个不存在的集合插入文档,集合会被自动创建。这是最常用的方式,如果数据库未成功创建,数据库也会同时创建。
use myShop
// 向 `users` 集合插入一条数据,如果 `users` 集合不存在,则自动创建
db.users.insertOne({name: "Alice", age: 25})显式创建:使用 createCollection 方法,通常用于创建有特殊选项(如固定大小、校验规则等)的集合。
use myShop
// 创建一个普通的 `products` 集合
db.createCollection("products")
// 创建一个固定大小的集合(常用于日志,达到大小后旧数据会被覆盖)
db.createCollection("logs", { capped: true, size: 100000 })use myShop
show collectionsuse myShop
// 删除 `products` 集合
db.products.drop()数据(Document,文档)
insertOne()db.users.insertOne({
name: "Bob",
age: 30,
email: "bob@example.com",
hobbies: ["reading", "hiking"],
address: { city: "Beijing", street: "123 Main St" }
})插入多条文档:insertMany()db.users.insertMany([
{ name: "Charlie", age: 35 },
{ name: "David", age: 28 },
{ name: "Eve", age: 32 }
])#查询user集合中所有数据
db.users.find()// 查找所有 age 等于 30 的用户
db.users.find({ age: 30 })
// 查找所有 age 大于 28 的用户
db.users.find({ age: { $gt: 28 } }) // $gt 是 "大于" 操作符1 表示包含,0 表示排除。// 只返回 name 和 email 字段,不返回 _id
db.users.find(
{ age: { $gt: 28 } }, // 查询条件
{ name: 1, email: 1, _id: 0 } // 投影
)findOne()// 返回第一个匹配的文档
db.users.findOne({ name: "Alice" })updateOne()// 将第一个名为 "Bob" 的用户年龄更新为 31
db.users.updateOne(
{ name: "Bob" }, // 过滤条件
{ $set: { age: 31 } } // 更新操作:$set 操作符用于设置字段值
)updateMany()// 为所有年龄大于 30 的用户添加一个 `tags` 字段
db.users.updateMany(
{ age: { $gt: 30 } },
{ $set: { tags: ["senior"] } }
)替换文档:replaceOne() - 用新文档完全替换匹配的文档(除了 _id)。db.users.replaceOne(
{ name: "Charlie" },
{ fullName: "Charlie Brown", job: "Developer" } // 新文档,完全替换旧文档
)删除单条文档:deleteOne()
// 删除第一个名为 "David" 的用户
db.users.deleteOne({ name: "David" })删除多条文档:deleteMany()
// 删除所有年龄小于 25 的用户
db.users.deleteMany({ age: { $lt: 25 } })
// 清空整个集合(删除所有文档)
db.users.deleteMany({})