Mongoose

node 中提供操作 MongoDB 的模块,能够通过 node 语法实现 MongoDB 数据库的增删改查,从而实现用 node 写程序来管理 MongoDB 数据库

一、Schema

在Mongoose中,Schema(模式)用于定义文档的结构。Schema定义了集合中每个文档的属性及其类型、默认值、验证规则等。Schema不仅提供了一种对MongoDB集合结构的强类型定义,还能扩展功能,比如添加方法、静态函数、中间件等。下面是对Mongoose Schema定义及其用法的详细说明:

定义 Schema

定义一个Schema通常通过创建一个新的 mongoose.Schema 对象,传入一个对象,该对象定义了文档的结构。

基本示例

1
2
3
4
5
6
7
8
9
10
11
const mongoose = require('mongoose');
const Schema = mongoose.Schema;

const userSchema = new Schema({
name: String,
age: Number,
email: { type: String, required: true, unique: true },
createdAt: { type: Date, default: Date.now }
});

const User = mongoose.model('User', userSchema);

Schema 类型

Mongoose支持多种Schema类型,常见的有:

Schema 配置选项

Schema的每个字段可以有多个配置选项,例如:

示例

1
2
3
4
5
6
7
8
9
10
11
const productSchema = new Schema({
name: { type: String, required: true },
price: { type: Number, required: true, min: 0 },
category: { type: String, enum: ['Electronics', 'Books', 'Clothing'] },
inStock: { type: Boolean, default: true },
tags: [String], // Array of strings
details: {
weight: Number,
dimensions: { type: String, match: /^[0-9]+x[0-9]+x[0-9]+$/ } // e.g., "10x20x30"
}
});

model

一个模型对应一个集合

通过模型来管理集合中的数据