【MongoDB 数据库介绍】

文章目录

    • 一、前言
    • [二、MongoDB 基础概念](#二、MongoDB 基础概念)
    • [三、MongoDB 安装与配置](#三、MongoDB 安装与配置)
      • [1. 安装 MongoDB](#1. 安装 MongoDB)
        • [(1) 在 Windows 上安装](#(1) 在 Windows 上安装)
        • [(2) 在 Linux(Ubuntu)上安装](#(2) 在 Linux(Ubuntu)上安装)
      • [2. 配置 MongoDB](#2. 配置 MongoDB)
    • [四、MongoDB 基本操作](#四、MongoDB 基本操作)
      • [1. 连接 MongoDB](#1. 连接 MongoDB)
      • [2. 创建数据库](#2. 创建数据库)
      • [3. 创建集合](#3. 创建集合)
      • [4. 插入文档](#4. 插入文档)
      • [5. 查询文档](#5. 查询文档)
      • [6. 更新文档](#6. 更新文档)
      • [7. 删除文档](#7. 删除文档)
      • [8. 创建索引](#8. 创建索引)
    • [五、MongoDB 高级应用](#五、MongoDB 高级应用)
      • [1. 聚合操作(Aggregation)](#1. 聚合操作(Aggregation))
      • [2. 事务支持(Transactions)](#2. 事务支持(Transactions))
      • [3. 备份与恢复](#3. 备份与恢复)

一、前言

MongoDB 是一种基于分布式存储的 NoSQL 数据库,采用文档模型存储数据,具有高性能、高可用性和高扩展性的特点。与传统的关系型数据库(如 MySQL、PostgreSQL)不同,MongoDB 以 BSON(类似 JSON)格式存储数据,使其更适合处理海量数据、实时分析以及高并发应用。


二、MongoDB 基础概念

  • 数据库(Database):MongoDB 服务器可以包含多个数据库,每个数据库独立管理数据。
  • 集合(Collection):类似于关系型数据库中的"表",但不需要预定义字段结构。
  • 文档(Document):MongoDB 的基本数据单元,一个文档是以 BSON 格式存储的键值对(类似 JSON)。
  • 字段(Field):文档中的键值对,相当于关系型数据库中的"列"。
  • 索引(Index):用于加速查询操作,提高数据库性能。

示例:

json 复制代码
{
    "_id": ObjectId("60d5ecadf3a3f3e3a5a3c3d1"),
    "name": "张三",
    "age": 28,
    "address": {
        "city": "北京",
        "zip": "100000"
    }
}

三、MongoDB 安装与配置

1. 安装 MongoDB

(1) 在 Windows 上安装
  1. MongoDB 官网 下载 MongoDB Community 版本。

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

  3. 配置 mongod.cfg 文件(默认端口 27017)。

  4. 启动 MongoDB 服务:

    powershell 复制代码
    net start MongoDB
(2) 在 Linux(Ubuntu)上安装
  1. 更新软件包列表:

    bash 复制代码
    sudo apt update
  2. 安装 MongoDB:

    bash 复制代码
    sudo apt install -y mongodb
  3. 启动 MongoDB:

    bash 复制代码
    sudo systemctl start mongodb
  4. 设置开机自启:

    bash 复制代码
    sudo systemctl enable mongodb

2. 配置 MongoDB

MongoDB 的配置文件位于 /etc/mongodb.conf(Linux)或 C:\Program Files\MongoDB\Server\6.0\bin\mongod.cfg(Windows)。

示例配置:

yaml 复制代码
storage:
  dbPath: /var/lib/mongodb
net:
  bindIp: 0.0.0.0  # 允许远程访问
  port: 27017
security:
  authorization: enabled  # 开启身份验证

重启 MongoDB 以应用更改:

bash 复制代码
sudo systemctl restart mongodb

四、MongoDB 基本操作

1. 连接 MongoDB

在终端输入:

bash 复制代码
mongo

如果已设置身份验证,则需要使用:

bash 复制代码
mongo -u "admin" -p "password" --authenticationDatabase "admin"

2. 创建数据库

javascript 复制代码
use mydatabase

查看当前数据库:

javascript 复制代码
db

3. 创建集合

javascript 复制代码
db.createCollection("users")

查看集合:

javascript 复制代码
show collections

4. 插入文档

javascript 复制代码
db.users.insertOne({ "name": "张三", "age": 28, "city": "北京" })

插入多个文档:

javascript 复制代码
db.users.insertMany([
    { "name": "李四", "age": 30, "city": "上海" },
    { "name": "王五", "age": 25, "city": "广州" }
])

5. 查询文档

查询所有数据:

javascript 复制代码
db.users.find()

条件查询:

javascript 复制代码
db.users.find({ "age": { $gt: 25 } })  // 查询 age > 25 的用户

格式化输出:

javascript 复制代码
db.users.find().pretty()

6. 更新文档

更新单个文档:

javascript 复制代码
db.users.updateOne(
    { "name": "张三" },
    { $set: { "age": 29 } }
)

更新多个文档:

javascript 复制代码
db.users.updateMany(
    { "city": "北京" },
    { $set: { "city": "天津" } }
)

7. 删除文档

删除单个文档:

javascript 复制代码
db.users.deleteOne({ "name": "张三" })

删除多个文档:

javascript 复制代码
db.users.deleteMany({ "city": "天津" })

8. 创建索引

javascript 复制代码
db.users.createIndex({ "name": 1 })

查看索引:

javascript 复制代码
db.users.getIndexes()

五、MongoDB 高级应用

1. 聚合操作(Aggregation)

javascript 复制代码
db.users.aggregate([
    { $group: { _id: "$city", total: { $sum: 1 } } }
])

该查询按照 city 字段分组,并统计每个城市的用户数量。

2. 事务支持(Transactions)

MongoDB 4.0 以上版本支持事务:

javascript 复制代码
session = db.getMongo().startSession()
session.startTransaction()
try {
    session.getDatabase("mydatabase").users.insertOne({ "name": "赵六", "age": 35 })
    session.commitTransaction()
} catch (error) {
    session.abortTransaction()
}
session.endSession()

3. 备份与恢复

备份数据库:

bash 复制代码
mongodump --out /backup/mongodb

恢复数据库:

bash 复制代码
mongorestore /backup/mongodb
相关推荐
悦来客栈的老板1 小时前
AST反混淆实战|reese84_jsvmp反编译前的优化处理
java·前端·javascript·数据库·算法
倔强的石头_1 小时前
灵活性与高性能兼得:KingbaseES 对 JSON 数据的全面支持解析
数据库
#微爱帮#1 小时前
微爱帮监狱寄信写信小程序数据库优化技术文档
数据库
SadSunset1 小时前
(15)动态SQL中的if,foreach和一些其他的常用标签
数据库·python·sql
问道飞鱼1 小时前
【数据库知识】MySQL 数据库备份与还原详细解读
数据库·mysql·备份·还原
马克学长2 小时前
SSM实验室设备管理系统8gr9f(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·ssm 框架·实验室设备管理·设备预约
+VX:Fegn08952 小时前
计算机毕业设计|基于springboot + vue在线考试管理系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
DreamNotOver2 小时前
使用 Django 测试脚本验证用户角色与权限:自动化测试用户仪表盘访
数据库·mysql·django·sqlite
萝卜青今天也要开心2 小时前
2025年下半年系统架构设计师考后分享
java·数据库·redis·笔记·学习·系统架构