目录
[一、MongoDB 基础准备](#一、MongoDB 基础准备)
[1. 官方资源获取](#1. 官方资源获取)
[2. 安装步骤解析](#2. 安装步骤解析)
[二、MongoDB 核心指令详解](#二、MongoDB 核心指令详解)
[1. 数据库操作指令](#1. 数据库操作指令)
[2. 集合操作指令](#2. 集合操作指令)
[3. 文档操作指令](#3. 文档操作指令)
[1. 运算符的灵活运用](#1. 运算符的灵活运用)
[2. 映射、排序与分页](#2. 映射、排序与分页)
[1. 创建用户](#1. 创建用户)
[2. 连接认证方式](#2. 连接认证方式)
在当今数据爆炸的时代,非关系型数据库(NoSQL)凭借其灵活的架构和出色的扩展性,成为处理海量非结构化数据的首选。其中,MongoDB 作为文档型 NoSQL 数据库的代表,以其易用性和强大功能被广泛应用于电商、社交、物联网等各类场景。本文将从 MongoDB 的基础安装开始,逐步深入到核心指令、进阶查询和用户管理,帮助开发者快速掌握 MongoDB 的实用技能。
一、MongoDB 基础准备
1. 官方资源获取
MongoDB 的官方网站是学习和获取资源的首要渠道,中文官网地址为:https://www.mongodb.com/zh-cn。在官网中,你可以找到最新的版本信息、详细的文档以及相关工具下载(如 MongoDB Community Server、MongoDB Compass 等)。
2. 安装步骤解析
MongoDB 的安装过程相对简单,但需要注意不同操作系统的差异。以下是安装的核心要点:
- 环境检查
在安装前,需确保操作系统满足 MongoDB 的运行要求:
-
- 磁盘空间:至少预留 1GB 以上可用空间
-
- 操作系统:Windows 10 及以上 / 主流 Linux 发行版(如 Ubuntu 20.04+、CentOS 7+)/macOS 10.15+
-
- 依赖库:Linux 系统需提前安装libcurl、openssl等基础依赖
- 安装配置
mongod --version # 查看服务端版本
mongo --version # 查看客户端版本
-
- 从官网下载对应操作系统的安装包(推荐使用稳定版)
-
- Windows 系统:运行安装程序,选择 "Custom" 自定义安装路径(建议路径不含中文和空格),勾选 "Install MongoDB Compass" 安装可视化工具
-
- Linux 系统:通过tar包解压或包管理器安装,配置数据存储目录(默认/data/db)和日志目录
-
- 环境变量配置:将 MongoDB 的bin目录添加到系统 PATH,验证安装是否成功:
二、MongoDB 核心指令详解
1. 数据库操作指令
# 查看所有非空数据库
show dbs
# 查看当前所在数据库
db
# 切换/创建数据库(插入数据后才会实际创建)
use mydatabase
# 删除当前数据库(谨慎操作!)
db.dropDatabase()
⚠️ 注意:新创建的数据库在未插入数据前,使用show dbs不会显示
2. 集合操作指令
集合类似于关系型数据库中的表,以下是常用操作:
# 查看当前数据库所有集合
show collections
# 创建集合(可指定可选参数如最大文档数、大小限制等)
db.createCollection("users")
# 删除指定集合
db.users.drop()
💡 提示:MongoDB 支持动态创建集合,插入文档时若集合不存在会自动创建:db.products.insertOne({name:"手机"})
3. 文档操作指令
文档是 MongoDB 的数据基本单位(JSON 格式),支持丰富的 CRUD 操作:
查询文档
# 查询集合所有文档(返回游标,默认显示前20条)
db.users.find({})
# 查询集合第一条文档
db.users.findOne({})
# 格式化输出查询结果
db.users.find({}).pretty()
插入文档
# 插入单个文档
db.users.insertOne({
name: "张三",
age: 25,
email: "zhangsan@example.com"
})
# 插入多个文档
db.users.insertMany([
{name: "李四", age: 30, email: "lisi@example.com"},
{name: "王五", age: 28, email: "wangwu@example.com"}
])
修改文档
# 更新符合条件的第一个文档
db.users.updateOne(
{name: "张三"}, # 查询条件
{$set: {age: 26, email: "new_zhangsan@example.com"}} # 更新内容
)
# 更新所有符合条件的文档
db.users.updateMany(
{age: {$lt: 30}}, # 年龄小于30的文档
{$set: {status: "young"}} # 添加状态字段
)
⚠️ 注意:set操作符用于指定更新的字段,若不使用set会替换整个文档
删除文档
# 删除符合条件的第一个文档
db.users.deleteOne({name: "张三"})
# 删除所有符合条件的文档
db.users.deleteMany({age: {$gt: 40}}) # 删除年龄大于40的文档
三、进阶查询技巧
1. 运算符的灵活运用
MongoDB 提供丰富的查询运算符,满足复杂查询需求:
比较运算符
|------|---------|----------------------------------|
| 运算符 | 说明 | 示例 |
| gt | 大于 | db.users.find({age: {gt: 30}}) |
| gte | 大于等于 | db.users.find({age: {gte: 20}}) |
| lt | 小于 | db.users.find({age: {lt: 30}}) |
| lte | 小于等于 | db.users.find({age: {lte: 30}}) |
| eq | 等于(可省略) | db.users.find({age: 30}) |
| ne | 不等于 | db.users.find({age: {$ne: 30}}) |
逻辑运算符
# AND条件查询(两种写法)
db.users.find({age: 30, name: {$ne: "t3"}}) # 简单条件
db.users.find({$and: [{age: {$gt: 20}}, {age: {$lt: 30}}]}) # 复杂条件
# OR条件查询
db.users.find({$or: [{age: 20}, {age: 25}]})
# NOT条件查询
db.users.find({age: {$not: {$gt: 25}}}) # 年龄不大于25(即≤25)
范围与成员运算符
# 范围查询(25<age<35)
db.users.find({age: {$gt: 25, $lt: 35}})
# 成员查询(age是20或25)
db.users.find({age: {$in: [20,25]}})
# 排除查询(age不是20或25)
db.users.find({age: {$nin: [20,25]}})
2. 映射、排序与分页
字段映射
控制查询结果返回的字段:
# 只返回name和age字段(_id默认返回,需显式排除)
db.users.find({}, {name: 1, age: 1, _id: 0})
💡 提示:1 表示包含字段,0 表示排除字段,两种方式不能混用(除了排除_id)
排序操作
# 按age降序排序(pymongo中使用)
db.users.find({}, {_id: 0}).sort("age", pymongo.DESCENDING)
# 多字段排序:先按age降序,再按name降序
db.users.find({}, {_id: 0}).sort([("age", pymongo.DESCENDING), ("name", pymongo.DESCENDING)])
注意:shell 环境中可直接使用 1(升序)和 - 1(降序):sort({age: -1})
分页查询
# 限制返回2条结果
db.users.find({}, {_id: 0}).limit(2)
# 分页查询:跳过前2条,返回1条(实现第3条数据查询)
db.users.find({}, {_id: 0}).skip(2).limit(1)
最佳实践:分页查询建议结合排序使用,确保结果顺序一致
四、用户管理与安全认证
1. 创建用户
MongoDB 默认无需认证即可访问,生产环境需开启认证机制:
# 切换到admin数据库
use admin
# 创建管理员用户
db.createUser({
user: "admin",
pwd: "admin123",
roles: [{role: "root", db: "admin"}] # 超级管理员角色
})
# 创建普通用户(指定数据库权限)
use mydatabase
db.createUser({
user: "zzy",
pwd: "123456",
roles: [{role: "readWrite", db: "mydatabase"}] # 读写权限
})
创建完成后需重启 MongoDB 服务并开启认证:
# Linux系统启动命令
mongod --auth --dbpath /data/db --logpath /var/log/mongodb.log --fork
2. 连接认证方式
连接字符串认证
# Python连接示例
import pymongo
client = pymongo.MongoClient(
f"mongodb://zzy:123456@localhost:27017/mydatabase?authSource=admin"
)
参数认证
client = pymongo.MongoClient(
host="localhost",
port=27017,
username='zzy',
password='123456',
authSource='admin' # 认证数据库,通常为admin
)
命令行认证
# 命令行连接并认证
mongo -u zzy -p 123456 --authenticationDatabase admin
五、总结与最佳实践
本文详细介绍了 MongoDB 的安装配置、核心操作指令、进阶查询技巧以及用户安全管理。作为文档型 NoSQL 数据库的佼佼者,MongoDB 凭借其schema 灵活性 、水平扩展能力 和丰富的查询功能,在现代应用开发中占据重要地位。
实用建议:
- 生产环境务必开启认证机制,根据业务需求分配最小权限角色
- 复杂查询建议创建索引提升性能:db.users.createIndex({name: 1})
- 批量操作优先使用insertMany、updateMany等批量指令减少网络交互
- 定期备份数据:使用mongodump工具进行数据备份
MongoDB 还有更多高级特性值得探索,如聚合管道、地理空间查询、分片集群等。掌握本文内容后,你已具备 MongoDB 的基础开发能力,可在实际项目中进一步实践深化。