Mongoose 是 Node.js 中最流行的 MongoDB ODM(Object-Document Mapping)工具之一,它允许我们以类似 ORM 的方式来访问 MongoDB 数据库。在 Mongoose 中,Schema 是数据结构的定义,它定义了文档中的各个属性及其类型。Mongoose 提供了多种数据类型,我们需要根据实际需求选择不同的类型。
本文将详细介绍 Mongoose 常见的 schema 类型,包括 String、Number、Date、Boolean、Array、Object 和 Mixed,并为每个类型提供实际的示例代码,以便读者更好地理解和应用。
String 类型
String 类型表示文本字符串,可以包含任何字符。在 Mongoose Schema 中,它的语法为:
----- ------ - --- ----------------- ----- ------ ---
使用 String 类型时,可以通过配置各种选项来更改其行为,比如最大长度、最小长度、默认值、正则表达式等等。以下是一个具有一些选项的示例:
----- ------ - --- ----------------- ----- - ----- ------- --------- ----- ---------- -- ---------- ---- ----- ---- - ---
以上示例中,我们定义了一个名为 name 的属性,它是一个 String 类型,必须设置值,最小长度为 3,最大长度为 100,且在保存之前会自动去除两端的空格。
Number 类型
Number 类型表示数字。在 Mongoose Schema 中,它的语法为:
----- ------ - --- ----------------- ---- ------ ---
和 String 类型一样,Number 类型也可以设置各种选项,比如最小值、最大值、默认值等等。以下是一个具有一些选项的示例:
----- ------ - --- ----------------- ---- - ----- ------- ---- -- ---- ---- -------- -- - ---
以上示例中,我们定义了一个名为 age 的属性,它是一个 Number 类型,最小值为 0,最大值为 120,如果没有设置值则默认值为 18。
Date 类型
Date 类型表示日期。在 Mongoose Schema 中,它的语法为:
----- ------ - --- ----------------- ------ ---- ---
和前面两个类型一样,Date 类型也可以设置各种选项,比如最小日期、最大日期、默认值等等。以下是一个具有一些选项的示例:
----- ------ - --- ----------------- ------ - ----- ----- ---- ------------- ---- ------------- -------- -------- - ---
以上示例中,我们定义了一个名为 birth 的属性,它是一个 Date 类型,最早日期为 '1900-01-01',最晚日期为 '2050-12-31',如果没有设置值则默认值为当前日期。
Boolean 类型
Boolean 类型表示布尔值,只有 true 或 false。在 Mongoose Schema 中,它的语法为:
----- ------ - --- ----------------- ---------- ------- ---
和前面三个类型一样,Boolean 类型也可以设置各种选项,比如默认值等等。以下是一个具有一些选项的示例:
----- ------ - --- ----------------- ---------- - ----- -------- -------- ----- - ---
以上示例中,我们定义了一个名为 isMarried 的属性,它是一个 Boolean 类型,如果没有设置值则默认值为 false。
Array 类型
Array 类型表示数组,可以包含任何类型的元素。在 Mongoose Schema 中,它的语法为:
----- ------ - --- ----------------- ------ -------- ---
使用 Array 类型时,也可以设置各种选项,比如最小长度、最大长度、默认值等等。以下是一个具有一些选项的示例:
----- ------ - --- ----------------- ------ - ----- --------- --------- ----- ---------- -- ---------- -- --------- - ---------- ----------- - ------ - -- -------- - - -- -------- -- -- -- -------- -------------- - - ---
以上示例中,我们定义了一个名为 hobby 的属性,它是一个 String 类型的数组,必须设置值且长度必须在 1~5 之间。
Object 类型
Object 类型表示嵌套的对象。在 Mongoose Schema 中,它的语法为:
----- ------ - --- ----------------- -------- - ----- ------- ------- ------- -------- ------ - ---
以上示例中,我们定义了一个名为 address 的属性,它是一个嵌套对象,包含了 city、street 和 zipCode 三个属性,它们都是 String 类型。
Mixed 类型
Mixed 类型表示混合类型,可以包含任何类型的数据,甚至可以混合各种类型。在 Mongoose Schema 中,它的语法为:
----- ------ - --- ----------------- -------- --------------------------- ---
以上示例中,我们定义了一个名为 profile 的属性,它是一个 Mixed 类型,可以包含任何类型的数据。
总结
Mongoose 提供了多种 schema 类型,根据实际需求,我们可以选择不同的类型来定义文档结构。除了示例代码中提到的选项外,Mongoose 还有其他很多用法和细节,读者可以参考官方文档进一步了解。学习 Mongoose schema 类型可以帮助我们更好地理解和应用 Mongoose,更高效地进行 MongoDB 数据库开发。
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/64f0270cf6b2d6eab3a17dff