mongodb nosql数据库笔记

MongoDB 简介

MongoDB 是一个开源的 NoSQL 数据库,采用文档存储模型(BSON 格式,类似 JSON),支持高灵活性、水平扩展和高性能的数据操作。与传统关系型数据库(如 MySQL)不同,MongoDB 无需预定义表结构,适合处理半结构化或非结构化数据。


MongoDB 核心特性

文档模型

数据以文档形式存储,每个文档包含键值对,嵌套结构支持复杂数据类型。示例文档:

json 复制代码
{
  "_id": ObjectId("507f191e810c19729de860ea"),
  "name": "Alice",
  "age": 30,
  "address": {
    "city": "New York",
    "zip": "10001"
  }
}

高性能

支持索引、聚合管道和内存映射文件,读写速度快。

javascript 复制代码
// 创建索引
db.users.createIndex({ name: 1 });

水平扩展(分片)

通过分片(Sharding)将数据分布到多个服务器,支持海量数据存储。

高可用性

副本集(Replica Set)提供自动故障转移和数据冗余。


基础操作

插入数据

javascript 复制代码
db.users.insertOne({
  name: "Bob",
  age: 25,
  hobbies: ["reading", "hiking"]
});

查询数据

javascript 复制代码
// 查找所有年龄大于 20 的用户
db.users.find({ age: { $gt: 20 } });

// 使用聚合管道分组统计
db.users.aggregate([
  { $group: { _id: "$city", count: { $sum: 1 } } }
]);

更新数据

javascript 复制代码
db.users.updateOne(
  { name: "Bob" },
  { $set: { age: 26 } }
);

删除数据

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

适用场景

  1. 实时分析:快速处理日志、传感器数据等时序数据。
  2. 内容管理:灵活存储文章、评论等嵌套内容。
  3. 物联网(IoT):高效存储设备生成的异构数据。
  4. 移动应用:支持离线同步和灵活的数据模型变更。

不适用场景

  1. 复杂事务:需跨文档强一致性时(尽管 MongoDB 4.0+ 支持多文档事务,但性能受限)。
  2. 高度结构化数据:固定表结构且关系复杂的场景(如财务系统)。

安装与工具

  1. 官方下载 :从 MongoDB官网 获取社区版。
  2. 命令行工具mongosh(MongoDB Shell)。
  3. GUI工具:MongoDB Compass、Robo 3T。

性能优化建议

  1. 合理设计索引,避免全表扫描。
  2. 使用投影(Projection)限制返回字段。
  3. 分片键选择需均匀分布数据。
  4. 监控慢查询日志(db.setProfilingLevel(2))。
javascript 复制代码
// 查看慢查询
db.system.profile.find().sort({ millis: -1 }).limit(10);
相关推荐
蒸蒸yyyyzwd1 小时前
cpp选手备战后端学习笔记day6 秋招笔试题
笔记·学习
DeviceHub3 小时前
硬件工程师选型笔记:ALPS SKPMAPE010 与 Tonevee TS-3025 贴片轻触开关 PIN TO PIN 评估指南
笔记
疯狂打码的少年4 小时前
【数据结构】二叉树的性质(五大性质+计算)
数据结构·笔记·算法
Capricorn19885 小时前
知芽研究问题看板无法推进?从孵化区到笔记的机制排查指南
大数据·论文阅读·人工智能·笔记·学习方法·论文笔记
闪闪发亮的小星星6 小时前
相机脱靶量VS精跟踪精度
笔记
皖山文武6 小时前
逻辑代数基础学习笔记--概述
笔记·学习·机器学习
demodeom9 小时前
Win11 + RTX 5080 本地 Coding 模型测试笔记(已弃坑)
笔记
青山是哪个青山10 小时前
LangChain 学习笔记(五):Tools 工具调用
笔记·学习·langchain
peijiping10 小时前
Agent 工具执行:并行(parallel_tool_calls)和后台(run_in_background)到底有什么区别? (学习笔记)
笔记·学习·ai agent·claude code
Oll Correct10 小时前
Adobe illustrator 案例四:吃豆人 (Pac-Man)图标绘制
笔记·ui·adobe·illustrator