在 Node.js 全栈项目中,MongoDB 作为非关系型数据库(NoSQL),常被用于存储结构灵活的文档数据(如用户信息、文章内容、日志等)。以下结合 Node.js 生态(使用官方驱动 mongodb 或 ODM 工具 Mongoose),详解 MongoDB 的基本操作及适配项目的实践。

一、环境准备

  1. 安装 MongoDB:本地部署或使用云服务(如 MongoDB Atlas),确保服务启动(默认端口 27017)。
  2. Node.js 依赖
    • 官方驱动:npm install mongodb(适合原生操作)。
    • Mongoose(推荐):npm install mongoose(基于官方驱动的 ODM 工具,提供 schema 验证、中间件等功能)。

二、核心概念(与 SQL 对比)

MongoDBSQL说明
DatabaseDatabase数据库(独立的存储单元)
CollectionTable集合(类似表,存储多个文档)
DocumentRow文档(类似行,JSON 格式的数据记录)
FieldColumn字段(文档中的键值对)
ObjectIdPrimary 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<