Skip to content
On this page

MongoDB 快速入门

MongoDB是一个开源的面向文档的NoSQL数据库,使用C++编写,旨在为Web应用提供可扩展的高性能数据存储解决方案。

什么是MongoDB

MongoDB是一种面向文档的数据库,它将数据存储在类似JSON的文档中,这些文档具有动态的模式,这意味着你不需要提前定义数据结构。这使得MongoDB在处理不规则数据时非常灵活。

主要特性

  • 面向文档的存储:数据以文档形式存储,类似于JSON对象
  • 动态模式:无需提前定义表结构
  • 高性能:内存映射文件和高效的查询机制
  • 高可用性:通过副本集提供自动故障转移
  • 水平扩展:通过分片支持数据分布

安装MongoDB

在Windows上安装

  1. 访问MongoDB官网下载社区版
  2. 运行安装程序并选择自定义安装
  3. 选择安装路径(默认为C:\Program Files\MongoDB\Server<version>\)
  4. 安装完成后,将MongoDB的bin目录添加到系统PATH环境变量

在macOS上安装

bash
# 使用Homebrew安装
brew tap mongodb/brew
brew install mongodb-community

在Linux上安装

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

启动MongoDB服务

Windows

bash
# 启动MongoDB服务
net start MongoDB

macOS

bash
# 启动MongoDB服务
brew services start mongodb/brew/mongodb-community

Linux

bash
# 启动MongoDB服务
sudo systemctl start mongod

MongoDB Shell

MongoDB Shell(mongosh)是一个交互式JavaScript接口,用于连接和操作MongoDB数据库。

连接到MongoDB

bash
mongosh

基本命令

javascript
// 显示所有数据库
show dbs

// 切换到指定数据库(如果不存在则创建)
use myDatabase

// 显示当前数据库
db

// 创建并插入文档
db.users.insertOne({
  name: "张三",
  age: 25,
  email: "zhangsan@example.com"
})

// 查询所有文档
db.users.find()

// 查询单个文档
db.users.findOne({name: "张三"})

// 更新文档
db.users.updateOne(
  { name: "张三" },
  { $set: { age: 26 } }
)

// 删除文档
db.users.deleteOne({ name: "张三" })

基本概念

文档(Document)

文档是MongoDB的基本数据单元,类似于关系数据库中的行。文档使用键值对存储数据:

json
{
  "_id": ObjectId("507f1f77bcf86cd799439011"),
  "name": "张三",
  "age": 25,
  "address": {
    "street": "中山路123号",
    "city": "北京",
    "zipcode": "100000"
  },
  "hobbies": ["读书", "游泳", "编程"]
}

集合(Collection)

集合是文档的分组,类似于关系数据库中的表。集合中的文档可以有不同的字段。

数据库(Database)

数据库是集合的容器,每个MongoDB实例可以包含多个数据库。

MongoDB与关系数据库对比

MongoDB关系数据库
数据库(Database)数据库(Database)
集合(Collection)表(Table)
文档(Document)行(Row)
字段(Field)列(Column)
嵌套文档外键关系

连接字符串

MongoDB使用标准的连接字符串格式:

mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]

示例:

bash
# 本地连接
mongodb://localhost:27017

# 连接指定数据库
mongodb://localhost:27017/myDatabase

# 远程连接
mongodb://username:password@remote-host:27017/myDatabase

第一个MongoDB应用

让我们创建一个简单的Node.js应用来连接MongoDB:

javascript
// 安装MongoDB驱动
npm install mongodb

// app.js
const { MongoClient } = require('mongodb');

const uri = "mongodb://localhost:27017";
const client = new MongoClient(uri);

async function main() {
  try {
    await client.connect();
    console.log("成功连接到MongoDB数据库");
    
    const db = client.db('myDatabase');
    
    // 插入文档
    const result = await db.collection('users').insertOne({
      name: "李四",
      age: 30,
      email: "lisi@example.com"
    });
    
    console.log(`新文档的ID: ${result.insertedId}`);
    
    // 查询文档
    const user = await db.collection('users').findOne({ name: "李四" });
    console.log(user);
    
  } finally {
    await client.close();
  }
}

main().catch(console.error);

总结

MongoDB提供了一个灵活、可扩展的NoSQL数据库解决方案。通过本文档的学习,你应该已经掌握了MongoDB的基本概念、安装方法和基本操作。在接下来的章节中,我们将深入探讨MongoDB的高级特性和最佳实践。