首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
01 | 认识文档数据库MongoDB
02 | MongoDB特色及优势
03 | 实验:安装MongoDB
04 | MongoDB基本操作
05 | 实验:Hello World程序开发
06 | 聚合查询
07 | 实验:聚合查询
08 | 复制集机制及原理
09 | 实验:搭建MongoDB复制集
10 | MongoDB全家桶
11 | 模型设计基础
12 | JSON文档模型设计特点
13 | 文档模型设计之一:基础设计
14 | 文档模型设计之二:工况细化
15 | 文档模型设计之三:模式套用
16 | 设计模式集锦
17 | 事务开发:写操作事务
18 | 事务开发:读操作事务之一
19 | 事务开发:读操作事务之二
20 | 事务开发:多文档事务
21 | Change Stream
22 | MongoDB开发最佳实践
23 | 分片集群机制及原理
24 | 分片集群设计
25 | 实验:分片集群搭建及扩容
26 | MongoDB监控最佳实践
27 | MongoDB备份与恢复
28 | 备份与恢复操作
29 | MongoDB安全架构
30 | MongoDB安全加固实践
31 | MongoDB索引机制(一)
32 | MongoDB索引机制(二)
33 | MongoDB读写性能机制
34 | 性能诊断工具
35 | 高级集群设计:两地三中心
36 | 实验:搭建两地三中心集群
37 | 高级集群设计:全球多写
38 | MongoDB上线及升级
39 | MongoDB应用场景及选型
40 | MongoDB典型案例(一)
41 | MongoDB典型案例(二)
42 | 关系型数据库迁移
43 | 数据库迁移方式及工具
44 | Oracle迁移实战
45 | MongoDB + Spark实时大数据
46 | MongoDB + Spark连接实战
47 | MongoDB SQL套接件
48 | MongoDB与微服务
49 | MongoDB与数据中台
50 | MongoDB数据中台案例
当前位置:
首页>>
技术小册>>
MongoDB入门到实战进阶
小册名称:MongoDB入门到实战进阶
### 04 | MongoDB基本操作 在深入MongoDB的广阔世界之前,掌握其基本操作是每位数据库管理员或开发者不可或缺的步骤。本章将引领您从MongoDB的数据库与集合的创建开始,逐步学习文档的增删改查(CRUD)操作,以及索引的创建与管理,为您的MongoDB实战之路打下坚实的基础。 #### 4.1 MongoDB环境搭建与连接 在深入MongoDB的基本操作之前,确保您已经成功安装了MongoDB,并且了解如何通过命令行或客户端连接到MongoDB实例。MongoDB支持多种连接方式,包括MongoDB Shell(mongo)、图形界面客户端(如Robo 3T、Studio 3T)、以及通过编程语言(如Python、Node.js)的MongoDB驱动程序。 - **MongoDB Shell(mongo)**:是MongoDB自带的命令行界面,用于执行数据库管理命令和查询。启动MongoDB服务后,通过命令行输入`mongo`即可进入MongoDB Shell。 - **图形界面客户端**:提供了更为直观的用户界面,便于管理数据库和执行复杂查询。安装并启动后,通过输入MongoDB实例的IP地址和端口(默认为27017)连接。 - **编程语言连接**:在Python中,可以使用PyMongo库;在Node.js中,可以使用Mongoose或MongoDB官方提供的Node.js驱动程序来连接MongoDB数据库。 #### 4.2 数据库与集合的创建 MongoDB的存储结构是面向文档的,它由数据库(Database)、集合(Collection)和文档(Document)三个层级组成。 - **创建数据库**:在MongoDB中,数据库是集合的容器。创建数据库通常是在执行插入操作时自动完成的,但如果需要显式创建数据库,可以使用`use 数据库名`命令。如果数据库不存在,MongoDB将创建它;如果已存在,则切换到该数据库。 - **创建集合**:集合是文档的集合,类似于关系数据库中的表。在MongoDB中,集合的创建也是隐式的,即在向集合中插入文档时,如果集合不存在,MongoDB会自动创建它。不过,也可以使用`db.createCollection("集合名")`方法显式创建集合,并设置一些额外的选项,如最大大小、是否允许自动索引等。 #### 4.3 文档的增删改查(CRUD) MongoDB的文档操作是其核心功能之一,包括创建(Create)、读取(Read)、更新(Update)和删除(Delete)四个基本操作。 - **插入文档**:使用`insertOne()`或`insertMany()`方法向集合中插入文档。`insertOne()`用于插入单个文档,而`insertMany()`可以一次插入多个文档。如果集合不存在,MongoDB会自动创建它。 ```javascript db.collection.insertOne({name: "MongoDB", type: "database"}) db.collection.insertMany([{name: "John", age: 30}, {name: "Jane", age: 25}]) ``` - **查询文档**:MongoDB提供了丰富的查询功能,通过`find()`方法可以查询集合中的文档。`find()`方法接受一个查询对象作为参数,用于指定查询条件。此外,还可以使用`findOne()`方法查询并返回第一个匹配的文档。 ```javascript db.collection.find({age: {$gt: 25}}) // 查询年龄大于25的所有文档 db.collection.findOne({name: "John"}) // 查询并返回第一个名字为John的文档 ``` - **更新文档**:使用`updateOne()`、`updateMany()`或`replaceOne()`方法更新文档。`updateOne()`和`updateMany()`方法允许您指定更新条件和更新操作(使用`$set`、`$inc`等操作符)。`replaceOne()`则直接替换整个文档。 ```javascript db.collection.updateOne({name: "John"}, {$set: {age: 31}}) // 更新名字为John的文档的年龄为31 db.collection.updateMany({}, {$inc: {visits: 1}}) // 将所有文档的visits字段加1 ``` - **删除文档**:使用`deleteOne()`或`deleteMany()`方法删除文档。`deleteOne()`删除第一个匹配的文档,而`deleteMany()`删除所有匹配的文档。 ```javascript db.collection.deleteOne({name: "John"}) // 删除第一个名字为John的文档 db.collection.deleteMany({age: {$lt: 20}}) // 删除所有年龄小于20的文档 ``` #### 4.4 索引的创建与管理 索引是MongoDB中用于提高查询效率的数据结构。通过为集合中的字段创建索引,MongoDB可以快速定位到文档,从而加快查询速度。 - **创建索引**:使用`createIndex()`方法创建索引。可以指定一个或多个字段作为索引的键,还可以指定索引的类型(如升序、降序)和唯一性。 ```javascript db.collection.createIndex({name: 1}) // 为name字段创建升序索引 db.collection.createIndex({age: -1, name: 1}, {unique: true}) // 创建复合索引,其中age为降序,name为升序,且该组合唯一 ``` - **查看索引**:使用`getIndexes()`方法可以查看集合中所有的索引。 ```javascript db.collection.getIndexes() ``` - **删除索引**:使用`dropIndex()`方法删除指定的索引。如果要删除所有索引,可以使用`dropIndexes()`方法。 ```javascript db.collection.dropIndex("name_1") // 删除名为name_1的索引 db.collection.dropIndexes() // 删除集合中的所有索引 ``` #### 4.5 聚合操作 MongoDB的聚合框架提供了一种强大的方式来处理数据记录并返回计算结果。通过聚合管道(Aggregation Pipeline),可以将多个聚合操作组合在一起,对数据集进行复杂的转换和聚合操作。 - **聚合管道操作**:包括`$match`(过滤)、`$group`(分组)、`$sort`(排序)、`$project`(投影)等。通过组合这些操作,可以执行复杂的查询和数据分析。 ```javascript db.collection.aggregate([ {$match: {age: {$gt: 20}}}, {$group: {_id: "$name", count: {$sum: 1}}}, {$sort: {count: -1}} ]) ``` 上述聚合管道首先过滤出年龄大于20的文档,然后按名字分组并计算每个名字的数量,最后按数量降序排序。 #### 4.6 总结 通过本章的学习,您已经掌握了MongoDB的基本操作,包括数据库与集合的创建、文档的增删改查、索引的创建与管理,以及聚合操作的基础知识。这些技能将为您后续的MongoDB实战应用打下坚实的基础。在实际应用中,您可能还需要学习更多高级特性,如事务处理、分片、复制集等,但掌握这些基本操作是迈向高级应用的第一步。继续深入探索MongoDB的世界,您将发现更多令人兴奋的功能和可能性。
上一篇:
03 | 实验:安装MongoDB
下一篇:
05 | 实验:Hello World程序开发
该分类下的相关小册推荐:
MongoDB入门教程
MongoDB面试指南
MongoDB入门与案例实战