MongoDB 从入门到精通:安装配置与基础操作指令详解

MongoDB 作为最流行的 NoSQL 数据库之一,以其灵活的文档模型、强大的可扩展性深受开发者青睐。本文将从 MongoDB 的安装配置开始,系统讲解数据库、集合、文档的核心操作指令,帮助初学者快速上手 MongoDB 开发。

MongoDB 与关系型数据库概念对比

为帮助熟悉关系型数据库的开发者快速理解 MongoDB,这里提供一个概念对比表:

关系型数据库 MongoDB 说明
数据库(Database) 数据库(Database) 概念基本一致,都是数据容器
表(Table) 集合(Collection) 集合无需预定义结构
行(Row) 文档(Document) 文档使用 BSON 格式存储
列(Column) 字段(Field) 文档字段可动态添加
主键(Primary Key) _id 字段 MongoDB 自动生成唯一标识
索引(Index) 索引(Index) 支持多种索引类型

通过这种对应关系,你可以更快地将关系型数据库的知识迁移到 MongoDB 的学习中,同时注意两者在数据模型设计上的本质区别。

MongoDB 的灵活性使得它特别适合迭代速度快、数据结构复杂多变的应用场景,如内容管理系统、社交应用、物联网数据采集等。掌握本文介绍的基础操作,是深入学习 MongoDB 高级特性的必要前提。

一、MongoDB 安装

1.1 下载与安装

Windows 系统

  1. 访问 MongoDB 官网(https://www.mongodb.com/try/download/community)下载对应版本的安装包

  2. 运行安装程序,选择"Complete"完整安装

  3. 勾选"Install MongoDB as a Service",将 MongoDB 安装为系统服务

  4. 安装完成后,MongoDB 会自动启动,默认端口为 27017

1.2 验证安装

前提是配置好环境

二、数据库(Database)操作指令

MongoDB 中数据库是集合的容器,无需预先创建,在第一次使用时会自动创建。

2.1 查看数据库

查看所有数据库

show dbs

查看当前所在数据库

db

2.2 切换/创建数据库

切换到指定数据库,若不存在则创建

use 数据库名

示例:切换到 blog 数据库

use blog

> 注意:新创建的数据库不会立即显示在 `show dbs` 结果中,需至少插入一条数据后才会显示。

2.3 删除数据库

删除当前数据库

db.dropDatabase()

操作步骤示例

use test # 切换到要删除的数据库

db.dropDatabase() # 执行删除

2.4 数据库相关其他操作

查看当前数据库状态

db.stats()

查看数据库中所有集合

show collections

三、集合(Collection)操作指令

集合类似于关系型数据库中的表,是文档的容器,同样无需预先创建,插入第一个文档时会自动创建。

3.1 创建集合

虽然集合会自动创建,但也可以手动创建并指定选项:

db.createCollection(集合名, [选项])

示例:创建名为 posts 的集合

db.createCollection("posts")

示例:创建带选项的集合(固定大小的 capped 集合)

db.createCollection("logs", {

capped: true, // 固定大小集合

size: 1048576, // 集合最大字节数(1MB)

max: 1000 // 最多文档数量

})

3.2 查看集合

查看当前数据库所有集合

show collections

show tables

3.3 删除集合

删除指定集合

db.集合名.drop()

示例:删除 comments 集合

db.comments.drop()

3.4 集合重命名

重命名集合

db.旧集合名.renameCollection(新集合名)

示例

db.posts.renameCollection("articles")

四、文档(Document)操作指令

文档是 MongoDB 中数据的基本单位,类似于关系型数据库中的行,采用 BSON 格式(JSON 的二进制扩展)存储。

4.1 插入文档

插入单个文档

基本语法

db.集合名.insertOne(文档)

示例:向 users 集合插入一个用户文档

db.users.insertOne({

name: "张三",

age: 25,

email: "zhangsan@example.com",

hobbies: ["篮球", "编程"],

createTime: new Date()

})

插入多个文档

基本语法

db.集合名.insertMany([文档1, 文档2, ...])

示例:插入多个用户

db.users.insertMany([

{

name: "李四",

age: 30,

email: "lisi@example.com",

hobbies: ["足球", "音乐"]

},

{

name: "王五",

age: 28,

email: "wangwu@example.com",

hobbies: ["阅读", "旅行"]

}

])

> 注意:每个文档会自动生成一个 `_id` 字段作为唯一标识,也可以手动指定。

4.2 查询文档

基本查询

查询集合中所有文档

db.集合名.find()

示例:查询 users 集合所有文档

db.users.find()

格式化输出

db.users.find().pretty()

条件查询

基本语法

db.集合名.find(查询条件)

示例1:查询年龄为25的用户

db.users.find({ age: 25 })

示例2:查询年龄大于25的用户($gt 表示大于)

db.users.find({ age: { $gt: 25 } })

示例3:查询年龄在25到30之间的用户(gte 大于等于,lte 小于等于)

db.users.find({ age: { gte: 25, lte: 30 } })

示例4:查询爱好包含"编程"的用户($in 表示包含)

db.users.find({ hobbies: { $in: ["编程"] } })

示例5:查询姓名为"张三"且年龄为25的用户(多条件且关系)

db.users.find({ name: "张三", age: 25 })

示例6:查询姓名为"张三"或年龄大于30的用户($or 表示或关系)

db.users.find({

$or: [

{ name: "张三" },

{ age: { $gt: 30 } }

]

})

投影查询(指定返回字段)

基本语法:1表示显示,0表示不显示(_id默认显示)

db.集合名.find(查询条件, { 字段1: 1, 字段2: 1, ... })

示例:只返回name和age字段,不返回_id

db.users.find({}, { name: 1, age: 1, _id: 0 })

排序查询

基本语法:1表示升序,-1表示降序

db.集合名.find().sort(字段: 排序方式)

示例:按年龄降序排列

db.users.find().sort({ age: -1 })

分页查询

skip(n):跳过n条记录

limit(m):返回m条记录

示例:查询第2页数据,每页2条

db.users.find().skip(2).limit(2)

4.3 更新文档

更新单个文档

基本语法

db.集合名.updateOne(查询条件, 更新操作)

示例1:将张三的年龄更新为26($set 操作符用于设置字段值)

db.users.updateOne(

{ name: "张三" },

{ $set: { age: 26 } }

)

示例2:增加李四的年龄($inc 操作符用于自增)

db.users.updateOne(

{ name: "李四" },

{ $inc: { age: 1 } } // 年龄+1

)

更新多个文档

基本语法

db.集合名.updateMany(查询条件, 更新操作)

示例:将所有年龄小于26的用户增加一个字段

db.users.updateMany(

{ age: { $lt: 26 } },

{ $set: { isYoung: true } }

)

替换文档

替换整个文档(_id 保持不变)

db.集合名.replaceOne(查询条件, 新文档)

示例

db.users.replaceOne(

{ name: "王五" },

{ name: "王五", age: 29, email: "newwangwu@example.com", hobbies: ["摄影"] }

)

4.4 删除文档

删除单个文档

基本语法

db.集合名.deleteOne(查询条件)

示例:删除姓名为"张三"的第一个文档

db.users.deleteOne({ name: "张三" })

删除多个文档

基本语法

db.集合名.deleteMany(查询条件)

示例:删除所有年龄大于30的用户

db.users.deleteMany({ age: { $gt: 30 } })

示例:删除集合中所有文档(保留集合结构)

db.users.deleteMany({})

五、总结

本文详细介绍了 MongoDB 的安装配置过程,以及数据库、集合、文档的核心操作指令。MongoDB 作为文档型数据库,其灵活的 schema 设计和丰富的查询能力使其在快速迭代的应用中具有显著优势。

掌握这些基础操作后,建议进一步学习:

  • MongoDB 的索引优化策略

  • 聚合管道(Aggregation Pipeline)的高级用法

  • MongoDB 的事务处理

  • 副本集和分片集群的部署(用于高可用和水平扩展)

通过不断实践,你将能充分发挥 MongoDB 在大数据量、高并发场景下的性能优势。

相关推荐
丘大梨1 小时前
QT 基础聊天应用项目文档
运维·数据库·系统架构
HMBBLOVEPDX2 小时前
MySQL的多版本并发控制(MVCC):
数据库·mysql·mvcc
ClouGence3 小时前
CloudDM 新增支持 GaussDB 与 openGauss:国产数据库管理更高效
数据库·sql·ci/cd
sukalot3 小时前
window显示驱动开发—在混合系统中使用跨适配器资源
数据库·驱动开发·音视频
洛卡卡了3 小时前
数据库加密方案实践:我们选的不是最完美,但是真的够用了。
数据库·后端·面试
幽络源小助理3 小时前
MySQL实战优化高手教程 – 从架构原理到生产调优
数据库·mysql·架构
Runing_WoNiu4 小时前
Redis主从架构、哨兵模式及集群比较
数据库·redis·架构
考虑考虑6 小时前
postgressql更新时间
数据库·后端·postgresql
甄超锋6 小时前
python sqlite3模块
jvm·数据库·python·测试工具·django·sqlite·flask