MongDB 数据库简单介绍

MongoDB 是一个开源的 NoSQL 数据库,以高性能、高扩展性和灵活的数据模型著称。它使用 文档存储模型(类似 JSON 格式的 BSON),适合处理非结构化半结构化数据。以下是详细介绍:


一、MongoDB 核心特性

  1. 文档存储

    • 数据以 BSON(Binary JSON)格式存储,支持嵌套对象、数组等复杂结构。
    • 示例文档:
      {
        "_id": ObjectId("5f9d1a2d3c4e5b6a7d8e9f0a"),
        "name": "Alice",
        "age": 30,
        "address": {
          "city": "New York",
          "zip": "10001"
        },
        "tags": ["developer", "mongodb"]
      }
      
  2. 灵活的模式(Schema-less)

    • 同一集合(Collection)中的文档可以有不同的字段结构,无需预先定义表结构。
  3. 水平扩展(分片)

    • 通过分片(Sharding)技术将数据分布到多个服务器,支持海量数据存储。
  4. 高可用性

    • 支持副本集(Replica Set),自动故障转移,保障数据冗余和可用性。
  5. 丰富的查询语言

    • 支持复杂查询、聚合、地理空间查询等。

二、MongoDB 基本概念

  1. 数据库(Database)

    • 存储多个集合(类似关系型数据库中的“库”)。
    • 命令示例:use mydb(切换到 mydb 数据库)。
  2. 集合(Collection)

    • 存储多个文档(类似关系型数据库中的“表”)。
    • 示例:db.users 表示操作 users 集合。
  3. 文档(Document)

    • 数据的基本单元,对应关系型数据库中的“行”。
  4. 索引(Index)

    • 提升查询性能,支持单字段、复合、全文、地理空间索引等。

三、基本语法与操作

1. 连接 MongoDB
# 使用命令行工具连接(默认端口 27017)
mongosh "mongodb://localhost:27017"
2. 数据库操作
// 查看所有数据库
show dbs

// 切换/创建数据库
use mydb

// 删除当前数据库
db.dropDatabase()
3. 集合操作
// 创建集合(可选配置)
db.createCollection("users", { capped: true, size: 100000 })

// 查看所有集合
show collections

// 删除集合
db.users.drop()
4. CRUD 操作
  • 插入文档

    // 插入单条文档
    db.users.insertOne({
      name: "Bob",
      age: 25,
      email: "bob@example.com"
    });
    
    // 插入多条文档
    db.users.insertMany([
      { name: "Charlie", age: 28 },
      { name: "Diana", age: 32 }
    ]);
    
  • 查询文档

    // 查询所有文档
    db.users.find();
    
    // 条件查询(等于)
    db.users.find({ age: 25 });
    
    // 条件查询(范围:age > 25)
    db.users.find({ age: { $gt: 25 } });
    
    // 限制返回字段(仅返回 name 和 age)
    db.users.find({}, { name: 1, age: 1, _id: 0 });
    
    // 排序(按 age 降序)
    db.users.find().sort({ age: -1 });
    
    // 分页(跳过前 5 条,取 10 条)
    db.users.find().skip(5).limit(10);
    
  • 更新文档

    // 更新单条文档(age 改为 26)
    db.users.updateOne(
      { name: "Bob" },
      { $set: { age: 26 } }
    );
    
    // 更新多条文档(所有 age > 25 的文档添加字段)
    db.users.updateMany(
      { age: { $gt: 25 } },
      { $set: { status: "active" } }
    );
    
  • 删除文档

    // 删除单条文档
    db.users.deleteOne({ name: "Bob" });
    
    // 删除多条文档
    db.users.deleteMany({ age: { $lt: 30 } });
    
5. 索引操作
// 创建单字段索引
db.users.createIndex({ name: 1 }); // 1 表示升序,-1 表示降序

// 创建复合索引
db.users.createIndex({ name: 1, age: -1 });

// 查看所有索引
db.users.getIndexes();

// 删除索引
db.users.dropIndex("name_1");
6. 聚合操作(Aggregation Pipeline)
// 统计每个城市的平均年龄
db.users.aggregate([
  { $group: { _id: "$address.city", avgAge: { $avg: "$age" } } },
  { $sort: { avgAge: -1 } }
]);

四、常用查询运算符

  • 比较运算符$eq, $ne, $gt, $gte, $lt, $lte
  • 逻辑运算符$and, $or, $not, $nor
  • 数组运算符$in, $nin, $all, $elemMatch
  • 字段存在性$exists: true
  • 正则匹配{ name: { $regex: /^A/ } }

五、安全与权限

  1. 启用身份验证
    在配置文件中设置 security.authorization: enabled

  2. 创建用户

    use admin
    db.createUser({
      user: "admin",
      pwd: "password",
      roles: ["root"]
    });
    
  3. 用户角色

    • read:只读权限
    • readWrite:读写权限
    • dbAdmin:数据库管理权限
    • userAdmin:用户管理权限

六、部署与工具

  1. 安装 MongoDB

    • 官网下载:https://www.mongodb.com/try/download/community
  2. 命令行工具

    • mongosh:MongoDB 的交互式 Shell。
    • mongodump/mongorestore:备份与恢复工具。
  3. 图形化工具

    • MongoDB Compass(官方 GUI)
    • DataGrip(推荐)

七、适用场景

  1. 实时数据分析(如日志、传感器数据)
  2. 内容管理系统(CMS)
  3. 移动应用后端(灵活的数据模型)
  4. 物联网(IoT)(高写入吞吐量)

八、注意事项

  • 虽然 MongoDB 支持灵活的模式,但设计合理的文档结构对性能至关重要。
  • 避免过度嵌套文档,防止查询性能下降。
  • 合理使用索引,但避免过多索引影响写入性能。

通过以上内容,你可以快速上手 MongoDB 的基本操作!如果需要进一步学习,建议参考官方文档:https://docs.mongodb.com/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值