【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
相关推荐
程序员侠客行2 分钟前
Mybatis二级缓存实现详解
java·数据库·后端·架构·mybatis
Tipriest_15 分钟前
linux中的文本分接流tee命令介绍
linux·服务器·数据库
爱喝水的鱼丶15 分钟前
SAP-ABAP:在SAP世界里与特殊字符“斗智斗勇”:一份来自实战的避坑指南
运维·服务器·数据库·学习·sap·abap·特殊字符
阿拉伯柠檬17 分钟前
MySQL内置函数
linux·数据库·mysql·面试
小Mie不吃饭21 分钟前
2025 Oracle小白零基础到入门的学习路线
数据库·oracle
麒qiqi26 分钟前
SQLite3 数据库
数据库·oracle
不吃橘子的橘猫39 分钟前
NVIDIA DLI 《Build a Deep Research Agent》学习笔记
开发语言·数据库·笔记·python·学习·算法·ai
程序 代码狂人1 小时前
DML,DDL,DCL,TCL
数据库
qinyia1 小时前
WisdomSSH解决MySQL频繁重启问题
数据库·mysql
松涛和鸣1 小时前
DAY42 SQLite3 : Dictionary Import and Data Query Implementation with C Language
linux·c语言·数据库·单片机·网络协议·sqlite