跳转至

MongoDB介绍

MongoDB 是一个广泛使用的开源文档型数据库,被归类为 NoSQL 数据库。它以 JSON 风格的 BSON(Binary JSON)格式存储数据,具有高性能、易扩展和高可用性的特点,非常适合处理大规模数据和快速原型开发。

主要特点

文档存储

  • 数据以 BSON 文档的形式存储,类似于 JSON 格式。
  • 每个文档是一个键值对集合,可以包含嵌套文档和数组。

灵活的模式

  • 无需预定义数据模式,允许每个文档具有不同的结构。
  • 适应快速变化的需求和动态的数据模型。

高性能

  • 支持水平扩展,数据可以分片存储在多个节点上,提升读写性能。
  • 内建索引支持,提高查询速度。

高可用性

  • 支持副本集,实现数据冗余和自动故障转移。
  • 数据在多个副本之间复制,确保高可用性和数据安全。

丰富的查询语言

  • 提供强大的查询、聚合和数据处理能力。
  • 支持地理空间查询、全文检索等高级查询功能。

易于集成

  • 提供多种语言的驱动程序和 API(如 JavaScript、Python、Java 等),易于与各种应用集成。
  • 有丰富的工具和库支持(如 Mongoose、Mongoid 等)。

基本操作示例

安装 MongoDB

  • Linux (Ubuntu)

    sudo apt update
    sudo apt install -y mongodb
    

  • macOS(使用 Homebrew):

    brew tap mongodb/brew
    brew install mongodb-community
    

  • Windows: 可以从 MongoDB 官方网站 下载并安装。

启动和停止 MongoDB 服务

  • Linux

    sudo systemctl start mongod
    sudo systemctl stop mongod
    sudo systemctl restart mongod
    

  • macOS

    brew services start mongodb-community
    brew services stop mongodb-community
    

  • Windows: 使用 "net start MongoDB" 和 "net stop MongoDB" 命令,或通过服务管理器管理 MongoDB 服务。

基本数据库操作

  1. 连接到 MongoDB

    mongo
    

  2. 显示所有数据库

    show dbs
    

  3. 创建或切换数据库

    use mydb
    

  4. 创建集合

    db.createCollection("mycollection")
    

  5. 插入文档

    db.mycollection.insertOne({ name: "Alice", age: 30, department: "HR" })
    db.mycollection.insertMany([
      { name: "Bob", age: 25, department: "Engineering" },
      { name: "Carol", age: 27, department: "Sales" }
    ])
    

  6. 查询文档

    db.mycollection.find({ name: "Alice" })
    db.mycollection.find().pretty()
    

  7. 更新文档

    db.mycollection.updateOne(
      { name: "Alice" },
      { $set: { age: 31 } }
    )
    db.mycollection.updateMany(
      { department: "Engineering" },
      { $set: { department: "Development" } }
    )
    

  8. 删除文档

    db.mycollection.deleteOne({ name: "Alice" })
    db.mycollection.deleteMany({ department: "Sales" })
    

  9. 删除集合

    db.mycollection.drop()
    

高级功能

索引

  • 提升查询性能。
    db.mycollection.createIndex({ name: 1 })
    

聚合

  • 实现复杂的数据处理和分析。
    db.mycollection.aggregate([
      { $match: { department: "HR" } },
      { $group: { _id: "$department", avgAge: { $avg: "$age" } } }
    ])
    

副本集

  • 提高数据的可用性和容错能力。
    mongod --replSet "rs0"
    

分片

  • 水平扩展数据,提高处理能力。
    sh.enableSharding("mydb")
    sh.shardCollection("mydb.mycollection", { _id: "hashed" })
    

总结

MongoDB 是一个灵活、高效且功能丰富的 NoSQL 数据库,非常适合处理大规模、快速变化的数据需求。无论是用于快速开发原型还是大规模的生产环境,MongoDB 都提供了强大的支持和丰富的特性。它的文档模型、灵活的查询和聚合功能,以及高可用性和扩展性,使其成为许多开发者和企业的首选数据库解决方案。

评论