Mongoose 是一个流行的 Node.js 应用程序的 MongoDB 对象模型工具。它提供了一种简单的方式来定义 MongoDB 数据库中的文档结构。在 Mongoose 中,Schema 是一个重要的概念,它用于定义数据模型的基础结构。本文将深入探讨 Mongoose Schema 的各种类型及其用法。
基本数据类型
String
String 类型用于表示字符串类型的数据。它有以下选项:
minlength
:字符串的最小长度。maxlength
:字符串的最大长度。enum
:枚举值数组,用于限制字符串的取值范围。
以下是一个示例:
const userSchema = new mongoose.Schema({ name: { type: String, required: true }, email: { type: String, required: true, unique: true }, password: { type: String, required: true, minlength: 6 }, role: { type: String, enum: ['admin', 'user'], default: 'user' } });
Number
Number 类型用于表示数字类型的数据。它有以下选项:
min
:数字的最小值。max
:数字的最大值。
以下是一个示例:
const productSchema = new mongoose.Schema({ name: { type: String, required: true }, price: { type: Number, required: true, min: 0 }, stock: { type: Number, required: true, min: 0 } });
Date
Date 类型用于表示日期类型的数据。它有以下选项:
default
:默认值。min
:日期的最小值。max
:日期的最大值。
以下是一个示例:
const postSchema = new mongoose.Schema({ title: { type: String, required: true }, content: { type: String, required: true }, author: { type: mongoose.Schema.Types.ObjectId, ref: 'User', required: true }, createdAt: { type: Date, default: Date.now }, updatedAt: { type: Date, default: Date.now }, publishedAt: { type: Date, min: Date.now, max: Date.now + 7 * 24 * 60 * 60 * 1000 } });
Boolean
Boolean 类型用于表示布尔类型的数据。它有以下选项:
default
:默认值。
以下是一个示例:
const userSchema = new mongoose.Schema({ name: { type: String, required: true }, email: { type: String, required: true, unique: true }, password: { type: String, required: true, minlength: 6 }, isAdmin: { type: Boolean, default: false } });
Mixed
Mixed 类型用于表示混合类型的数据。它可以存储任何类型的数据。以下是一个示例:
-- -------------------- ---- ------- ----- ----------- - --- ----------------- --------- - ----- ------------------------------- ---- ------- --------- ---- -- --------- -- -------- - ----- ------------------------------- ---- ---------- --------- ---- -- --------- - ----- ------- --------- ----- ---- - -- ------ - ----- ------- --------- ----- ---- - - --- ------- - ----- ------- ----- ----------- ---------- ------------- --------- ---- -- --------- - ----- --------------------------- - ---
高级数据类型
ObjectId
ObjectId 类型用于表示 MongoDB 中的 _id 字段。它有以下选项:
ref
:引用的模型名称。
以下是一个示例:
const postSchema = new mongoose.Schema({ title: { type: String, required: true }, content: { type: String, required: true }, author: { type: mongoose.Schema.Types.ObjectId, ref: 'User', required: true } });
Array
Array 类型用于表示数组类型的数据。它有以下选项:
of
:数组元素的类型。
以下是一个示例:
const userSchema = new mongoose.Schema({ name: { type: String, required: true }, email: { type: String, required: true, unique: true }, orders: [{ type: mongoose.Schema.Types.ObjectId, ref: 'Order' }] });
Map
Map 类型用于表示键值对类型的数据。它有以下选项:
of
:值的类型。
以下是一个示例:
const userSchema = new mongoose.Schema({ name: { type: String, required: true }, email: { type: String, required: true, unique: true }, preferences: { type: Map, of: String } });
Schema.Types
Mongoose 还提供了一些内置的 Schema.Types,包括:
Buffer
:用于存储二进制数据。Decimal128
:用于存储高精度数字。Map
:用于存储键值对类型的数据。Mixed
:用于存储混合类型的数据。ObjectId
:用于存储 MongoDB 中的 _id 字段。Schema.Types.Array
:用于存储数组类型的数据。Schema.Types.Boolean
:用于存储布尔类型的数据。Schema.Types.Date
:用于存储日期类型的数据。Schema.Types.Decimal128
:用于存储高精度数字。Schema.Types.Map
:用于存储键值对类型的数据。Schema.Types.Mixed
:用于存储混合类型的数据。Schema.Types.Number
:用于存储数字类型的数据。Schema.Types.ObjectId
:用于存储 MongoDB 中的 _id 字段。Schema.Types.String
:用于存储字符串类型的数据。
以下是一个示例:
const userSchema = new mongoose.Schema({ name: String, email: { type: String, required: true, unique: true }, avatar: { type: Buffer }, balance: { type: mongoose.Schema.Types.Decimal128, default: 0 }, preferences: { type: Map, of: String }, orders: [{ type: mongoose.Schema.Types.ObjectId, ref: 'Order' }] });
总结
本文深入探讨了 Mongoose Schema 的各种类型及其用法,包括基本数据类型和高级数据类型。通过学习本文,你可以更好地理解 Mongoose 的数据模型概念,从而更好地设计和开发 MongoDB 数据库应用程序。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6513cefc95b1f8cacdc3f22b