【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
相关推荐
niuyueyang19 分钟前
MCP `/mcp/status` Lifecycle 技术方案
java·服务器·数据库
Umi·29 分钟前
MySQL之DQL使用实例
数据库·mysql
牧竹子1 小时前
当前支持向量的主流数据库情况对比
数据库
Small-Young3 小时前
数据库乐观锁深度解析:MySQL、PostgreSQL 实战 + Spring Boot 集成指南
数据库·spring boot·mysql·postgresql·乐观锁·并发控制
浮生若城3 小时前
MySQL 数据库基础
数据库·mysql
香蕉大香蕉(06敬畏市场)3 小时前
MySQL 单点详解(09)
java·数据库·mysql·面试·八股·大厂实习
瀚高PG实验室3 小时前
瀚高数据库运行日志(错误日志)查看与分析方法
数据库·postgresql·瀚高数据库
snow@li3 小时前
PostgreSQL:PostgreSQL(PG)全景深度梳理
数据库·postgresql
java_nnnn3 小时前
Spring IoC & DI 从入门到理解:控制反转、依赖注入与 Bean 管理详解
数据库·sql·spring
瀚高PG实验室4 小时前
HGHAC集群版本升级
数据库·postgresql·瀚高数据库