前提准备:MongoDB基础入门¶
在开始学习CRUD操作前,我们先简单了解MongoDB的特点:它是一款文档型数据库,数据以JSON格式(BSON)存储,没有固定的表结构,每个数据单元称为“文档”,存放在“集合”(Collection)中。
操作前准备:
1. 打开MongoDB服务(本地默认无需额外配置),在命令行输入 mongo 进入Mongo Shell。
2. 切换到目标数据库(如 use mydb,若不存在则自动创建)。
3. 选择要操作的集合(如 db.users,若不存在则插入数据时自动创建)。
1. Create(创建):向集合插入数据¶
创建操作的核心是向集合中添加新文档,常用方法:
1.1 插入单条数据:insertOne()¶
语法:db.集合名.insertOne(文档对象)
示例:向 users 集合插入一个用户信息:
// 插入单条文档
db.users.insertOne({
name: "张三",
age: 20,
email: "zhangsan@example.com"
})
返回结果:
{
"acknowledged": true, // 操作确认
"insertedId": "650a0b12c3d4e5f6a7b8c9d0", // 自动生成的唯一ID(_id)
"insertedCount": 1
}
1.2 插入多条数据:insertMany()¶
语法:db.集合名.insertMany([文档1, 文档2, ...])
示例:插入两条用户数据:
db.users.insertMany([
{ name: "李四", age: 22, email: "lisi@example.com" },
{ name: "王五", age: 21, email: "wangwu@example.com" }
])
返回结果:
{
"acknowledged": true,
"insertedIds": [
"650a0b12c3d4e5f6a7b8c9d1",
"650a0b12c3d4e5f6a7b8c9d2"
],
"insertedCount": 2
}
2. Read(读取):查询集合数据¶
读取操作用于获取集合中的数据,核心是 find() 方法,支持条件过滤、字段筛选、排序等。
2.1 查询所有文档:find()¶
语法:db.集合名.find(查询条件, {字段投影})
- 查询条件:空对象
{}表示查询所有文档。 - 字段投影:
{字段名: 1}表示返回该字段,{字段名: 0}表示排除该字段(_id默认返回,需显式设为0排除)。
示例:查询 users 集合中所有用户信息,并只返回 name 和 age:
// 1. 查询所有文档,返回所有字段
db.users.find()
// 2. 只返回name和age(排除_id)
db.users.find({}, { name: 1, age: 1, _id: 0 })
2.2 带条件查询:¶
通过条件过滤文档,常用操作符:等于(=)、大于(>)、小于(<)、不等于(!=)、包含(in)等。
示例:查询年龄为20的用户:
db.users.find({ age: 20 }) // 条件为age=20
示例:查询年龄大于21的用户:
db.users.find({ age: { $gt: 21 } }) // $gt 表示大于
2.3 排序、限制数量:¶
- 排序:
sort({字段: 1})(1=升序,-1=降序)。 - 限制数量:
limit(n)(只返回前n条)。
示例:查询年龄小于25的用户,按年龄升序排列,只返回前2条:
db.users.find({ age: { $lt: 25 } })
.sort({ age: 1 }) // 升序排序
.limit(2) // 限制返回2条
3. Update(更新):修改集合数据¶
更新操作需明确修改规则(条件)和修改方式(操作符),常用方法:
3.1 更新单条数据:updateOne()¶
语法:db.集合名.updateOne(查询条件, {修改操作})
常用修改操作符:
- $set:覆盖字段(如修改name、age)。
- $inc:自增字段(如age+1)。
示例:将姓名为“张三”的用户年龄+1:
db.users.updateOne(
{ name: "张三" }, // 查询条件:name=张三
{ $inc: { age: 1 } } // 修改操作:age自增1
)
示例:将姓名为“李四”的用户姓名改为“李华”:
db.users.updateOne(
{ name: "李四" },
{ $set: { name: "李华" } } // 修改name字段
)
3.2 更新多条数据:updateMany()¶
语法:db.集合名.updateMany(查询条件, {修改操作})
示例:将所有年龄小于22的用户年龄设为22:
db.users.updateMany(
{ age: { $lt: 22 } }, // 条件:age<22
{ $set: { age: 22 } } // 覆盖age字段
)
4. Delete(删除):移除集合数据¶
删除操作需谨慎,避免误删,常用方法:
4.1 删除单条数据:deleteOne()¶
语法:db.集合名.deleteOne(查询条件)
示例:删除姓名为“王五”的用户:
db.users.deleteOne({ name: "王五" })
4.2 删除多条数据:deleteMany()¶
语法:db.集合名.deleteMany(查询条件)
示例:删除所有年龄大于22的用户:
db.users.deleteMany({ age: { $gt: 22 } })
4.3 清空集合(危险操作!):¶
删除所有文档(需确认集合中无重要数据):
db.users.deleteMany({}) // 空条件表示删除所有文档
总结¶
MongoDB的CRUD操作是数据管理的基础,核心是:
- Create:用 insertOne/insertMany 插入文档。
- Read:用 find 带条件、投影、排序查询数据。
- Update:用 updateOne/updateMany 配合 $set/$inc 等操作符修改。
- Delete:用 deleteOne/deleteMany 带条件删除,避免误删。
练习建议:新建一个 students 集合,尝试完成“插入3条学生数据→查询年龄18岁以上的学生→将所有18岁学生年龄+1→删除所有女生数据”的完整流程,熟悉各操作细节。
通过基础操作,你已能独立完成MongoDB数据的增删改查,后续可学习索引、聚合管道等进阶功能~