MongoDB基础

第1章:MongoDB基础

1.1 NoSQL与MongoDB简介

1.1.1 NoSQL数据库发展历程

  • 传统关系型数据库的局限性

  • Web 2.0时代的数据存储需求

  • NoSQL数据库的兴起

  • MySQL与MongoDB的比较

    • 优点:
      • 高性能
      • 可扩展
      • 灵活的文档模型
    • 缺点:
      • 无事务支持
      • 无join支持
      • 数据一致性问题
    • 实时web应用
    • 分布式数据存储
    • 大数据分析
    • 数据采集与分析

1.1.2 文档型数据库概念

  • 文档的灵活性
  • 无模式设计
  • JSON/BSON数据格式

1.1.3 MongoDB的特点与优势

  1. 灵活的文档模型
javascript 复制代码
// 动态模式示例
db.users.insertMany([
    {
        name: "张三",
        age: 30,
        contacts: {
            email: "zhangsan@example.com",
            phone: "13800138000"
        }
    },
    {
        name: "李四",
        age: 25,
        hobbies: ["篮球", "编程"]
    }
])
  1. 高性能
  • 索引支持
  • 内存映射存储引擎
  • 横向扩展能力
  1. 丰富的查询语言
javascript 复制代码
// 复杂查询示例
db.products.find({
    $and: [
        {price: {$gte: 100, $lte: 500}},
        {category: "电子产品"},
        {stock: {$gt: 0}}
    ]
})

1.1.4 应用场景分析

  • 实时分析系统
  • 内容管理
  • 物联网数据存储
  • 移动应用后端
  • 日志存储

1.2 安装与配置

1.2.1 多平台安装

bash 复制代码
# Ubuntu安装
wget -qO - https://www.mongodb.org/static/pgp/server-5.0.asc | sudo apt-key add -
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/5.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-5.0.list
sudo apt-get update
sudo apt-get install -y mongodb-org

# MacOS安装
brew tap mongodb/brew
brew install mongodb-community

# Windows安装
# 下载官方安装包,配置环境变量

1.2.2 配置文件详解

yaml 复制代码
# mongodb.conf 配置示例
systemLog:
   destination: file
   path: /var/log/mongodb/mongod.log
   logAppend: true

storage:
   dbPath: /var/lib/mongodb
   journal:
      enabled: true

net:
   port: 27017
   bindIp: 0.0.0.0

security:
   authorization: enabled

1.3 基本概念

1.3.1 数据模型

  1. 数据库(Database)
  2. 集合(Collection)
  3. 文档(Document)
  4. 字段(Field)
  5. ObjectId
javascript 复制代码
// 数据模型示例
{
    _id: ObjectId("5f8d3a1c9d3b2a1b1c9d3b2a"),  // 唯一标识符
    name: "产品名称",
    price: 99.99,
    tags: ["电子", "数码"],
    specs: {
        color: "black",
        size: "large"
    }
}

1.3.2 ObjectId详解

javascript 复制代码
// ObjectId生成机制
let id = ObjectId()
id.getTimestamp()  // 获取创建时间
id.str  // 字符串表示

实践练习

  1. 安装MongoDB
  2. 配置基本连接
  3. 创建第一个数据库
  4. 插入不同结构的文档
  5. 体验动态模式的灵活性

学习总结

  • 理解NoSQL与文档型数据库概念
  • 掌握MongoDB安装与基本配置
  • 了解数据模型的灵活性
  • 认识MongoDB的应用场景
  • 初步体验文档存储的优势
相关推荐
eWidget1 天前
InfluxDB迁移至金仓数据库的同城容灾实践:性能显著提升、运维效率优化,某能源企业实现RPO_5秒的高可靠时序数据管理
运维·数据库·能源·时序数据库·kingbase·kingbasees·金仓数据库
小句1 天前
MySQL慢查询日志详细使用指南
数据库·mysql·adb
老邓计算机毕设1 天前
SSM医疗资源普查6qxol(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·ssm 框架·javaweb开发·医疗资源管理
dyyx1111 天前
如何从Python初学者进阶为专家?
jvm·数据库·python
码农水水1 天前
中国邮政Java面试被问:容器镜像的多阶段构建和优化
java·linux·开发语言·数据库·mysql·面试·php
曹牧1 天前
Oracle:NULL
数据库·oracle
龙之叶1 天前
【Android Monkey源码解析五】- 异常处理
android·数据库
马克学长1 天前
SSM医院门诊管理系统u4pw5(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·ssm 框架·javaweb 开发·门诊管理
TDengine (老段)1 天前
使用安装包快速体验 TDengine TSDB
大数据·数据库·物联网·时序数据库·tdengine·涛思数据
闻哥1 天前
Redis 避坑指南:从命令到主从的全链路踩坑实录
java·数据库·redis·缓存·面试·springboot