MongoDB完全指南 | AI生成和翻译

Home 2025.10

MongoDB 是一种流行的开源 NoSQL 文档数据库,专为现代应用开发而设计。它使用灵活的类 JSON 文档(称为 BSON)存储数据,非常适合处理非结构化或半结构化数据。与传统关系型数据库不同,MongoDB 采用无模式设计,允许集合(文档组)拥有不同的结构。它具有高度可扩展性,支持通过分片实现水平扩展,并通过复制提供高可用性。MongoDB 可部署在本地、通过 MongoDB Atlas(托管服务)在云端或混合环境中运行。本指南涵盖从基础到高级主题的所有内容,并提供使用 MongoDB Shell (mongosh) 的示例。

简介

MongoDB 在需要快速开发、灵活数据模型和高性能的场景中表现出色。主要特性包括:

被 Adobe、eBay 和 Forbes 等公司用于大数据、实时分析和内容管理等应用场景。

安装指南

MongoDB 提供社区版(免费开源)和企业版。安装方法因平台而异;请始终从官网下载以确保安全。

Windows 系统

支持:Windows 11、Server 2022/2019

macOS 系统

支持:macOS 11–14(x86_64 和 arm64 架构)

Linux 系统

支持:Ubuntu 24.04、RHEL 9+、Debian 12、Amazon Linux 2023 等。建议使用 XFS/EXT4 文件系统,避免 32 位系统

云端(MongoDB Atlas)

Atlas 自动处理备份、扩展和监控功能

核心概念

数据库

作为集合的容器,实现数据逻辑分离。首次使用时隐式创建:use mydb。切换数据库:use mydb。列出数据库:show dbs

集合

文档的分组,类似表但具有模式灵活性。隐式创建:db.mycollection.insertOne({})。列出集合:show collections

文档

数据基本单元:包含键值对的 BSON 对象。示例:

{ "_id": ObjectId("..."), "name": "John", "age": 30, "address": { "city": "NYC", "zip": 10001 } }

支持数组、嵌套对象及日期、二进制等数据类型

BSON

二进制格式,提供高效存储和网络传输。在 JSON 基础上扩展了 ObjectId、Date、Binary 等类型

命名空间

唯一标识符格式:数据库.集合(如 mydb.orders

配置示例:

use test
db.orders.insertMany([
  { item: "almonds", price: 12, quantity: 2 },
  { item: "pecans", price: 20, quantity: 1 }
])

CRUD 操作

在 mongosh 中使用 db.collection.method() 语法。多文档 ACID 事务通过会话实现

创建(插入)

读取(查询)

更新

删除

查询与索引

查询操作

使用谓词条件进行筛选。支持等值、范围、逻辑运算等操作

字段投影:db.users.find({ age: { $gt: 25 } }, { name: 1, _id: 0 })

索引机制

通过避免全表扫描提升查询速度。基于 B 树结构

使用 Atlas Performance Advisor 获取优化建议。注意权衡:写入速度会受影响

聚合框架

通过管道阶段处理数据。类似 SQL GROUP BY 但功能更强大

模式设计

MongoDB 的灵活性避免了刚性模式约束,但需要为性能进行周密设计

权衡数据冗余与原子性(仅文档级别)的取舍

复制与分片

复制机制

通过副本集(一组 mongod 实例)提供冗余和高可用性

分片架构

水平扩展方案:将数据分布到多个分片

通过 mongos 连接;支持跨分片事务

安全防护

通过分层保护机制确保部署安全

启动时启用认证:--auth。使用 Atlas 获得内置安全功能

最佳实践

开发环境建议使用 Atlas M0 免费层级。使用 mongoperf 测试工作负载

参考资源


Back

x-ai/grok-4-fast

Donate