MongoDB的基本操作(适配Node.js全栈项目)
在 Node.js 全栈项目中,MongoDB 作为非关系型数据库(NoSQL),常被用于存储结构灵活的文档数据(如用户信息、文章内容、日志等)。以下结合 Node.js 生态(使用官方驱动 mongodb 或 ODM 工具 Mongoose),详解 MongoDB 的基本操作及适配项目的实践。
一、环境准备
- 安装 MongoDB:本地部署或使用云服务(如 MongoDB Atlas),确保服务启动(默认端口
27017)。 - Node.js 依赖:
- 官方驱动:
npm install mongodb(适合原生操作)。 - Mongoose(推荐):
npm install mongoose(基于官方驱动的 ODM 工具,提供 schema 验证、中间件等功能)。
- 官方驱动:
二、核心概念(与 SQL 对比)
| MongoDB | SQL | 说明 |
|---|---|---|
| Database | Database | 数据库(独立的存储单元) |
| Collection | Table | 集合(类似表,存储多个文档) |
| Document | Row | 文档(类似行,JSON 格式的数据记录) |
| Field | Column | 字段(文档中的键值对) |
| ObjectId | Primary Key | 文档唯一标识(默认自动生成) |
三、使用 Mongoose 操作 MongoDB(推荐)
Mongoose 是 Node.js 中最流行的 MongoDB ODM 工具,通过 Schema 定义数据结构,Model 操作集合,简化开发。
1. 连接数据库
// db.js
const mongoose = require('mongoose');// 连接本地 MongoDB(数据库名:myapp)
mongoose.connect('mongodb://localhost:27017/myapp', {useNewUrlParser: true,useUnifiedTopology: true
})
.then(() => console.log('MongoDB 连接成功'))
.catch(err => console.error('连接失败:', err));module.exports = mongoose;
2. 定义 Schema 与 Model
Schema 用于约束文档结构(字段类型、默认值、验证规则等),Model 是 Schema 的实例化,对应 MongoDB 的 Collection。
// models/User.js
const mongoose = require('../db');// 定义用户 Schema
const userSchema = new mongoose.Schema({username: {type: String, // 字段类型required: true, // 必传unique: true, // 唯一(不可重复)trim: true // 自动去除首尾空格},age: {type: Number,min: 0, // 最小值验证default: 0 // 默认值},email: {type: String,match: /^[\w-]+@([\w-]+\.)+[\w-]+$/, // 邮箱格式验证required: true},createdAt: {type: Date,default<