一、创建schemas 创建schemas的方式: var userSchema = new mongoose.Schema({ name: String, email: String, createdOn: Date }); schemas中的数据类型有以下几种: String Number Date Boolean Buffer ObjectId Mixed Array 特别需要说明一下ObjectId类型和Mixed类型以及Array类型,在schemas中声明这几种类型的方式如下: //ObjectId就类似于 MongoDB 是一个流行的 NoSQL 数据库,而 Mongoose 是一个基于 Node.js 的 MongoDB 模型层,它提供了数据建模和操作的高级抽象。在本文中,我们将深入探讨 Mongoose 的核心概念,包括 Schemas、Models 和静态方法,以及如何在实际应用中使用它们。 一、创建 Schemas 在 Mongoose 中,Schemas 是定义数据结构的关键。它们描述了文档的字段及其数据类型。创建 Schema 的方式如下: ```javascript var userSchema = new mongoose.Schema({ name: String, email: String, createdOn: Date }); ``` 在用户 Schema 中,`name` 和 `email` 字段是字符串类型,`createdOn` 是日期类型。Mongoose 提供了多种内置数据类型,包括: 1. String 2. Number 3. Date 4. Boolean 5. Buffer 6. ObjectId 7. Mixed 8. Array `ObjectId` 类型通常用于引用其他文档的 _id 字段,它类似于关系数据库中的外键。声明 ObjectId 类型如下: ```javascript projectSchema.add({ owner: mongoose.Schema.Types.ObjectId }); ``` `Mixed` 类型允许存储任意类型的数据,可以是任何 JSON 对象。创建 Mixed 类型有以下两种方式: ```javascript // 方式一 var djSchema = new mongoose.Schema({ mixedUp: {} }); // 方式二 var djSchema = new mongoose.Schema({ mixedUp: Schema.Types.Mixed }); ``` Array 类型数据可以包含简单的同类型元素,也可以包含复杂的嵌套 Schema。例如: ```javascript // 简单数组 var userSchema = new mongoose.Schema({ name: String, emailAddresses: [String] }); // 复杂类型数组 var emailSchema = new mongoose.Schema({ email: String, verified: Boolean }); var userSchema = new mongoose.Schema({ name: String, emailAddresses: [emailSchema] }); ``` 二、创建 Model Model 是基于 Schema 创建的,用于与数据库进行交互。创建 Model 的代码如下: ```javascript var User = Mongoose.Model('User', userSchema); ``` Model 名称('User')和 Schema 对象是创建 Model 所需的参数。 三、静态方法 在 Mongoose 中,可以给 Schema 添加静态方法,这些方法在 Model 实例化后可用。例如,我们创建一个名为 `findByUserID` 的静态方法: ```javascript projectSchema.statics.findByUserID = function (userid, callback) { this.find({ createdBy: userid }, '_id projectName', { sort: 'modifiedOn' }, callback); }; ``` 然后在 Model 编译后,可以通过 Model 对象调用这个方法: ```javascript Project.findByUserID(userid, callback); ``` 四、数据库连接 Mongoose 连接 MongoDB 数据库通常有两种方式。你需要安装 Mongoose 库,然后创建连接: ```javascript const mongoose = require('mongoose'); mongoose.connect('mongodb://localhost/my_database', { useNewUrlParser: true, useUnifiedTopology: true }).then(() => console.log('Connected to MongoDB')) .catch(error => console.error('Error connecting to MongoDB:', error)); ``` 在实际应用中,你可能还需要处理断开连接的情况,例如在应用关闭时。 总结来说,Mongoose 通过 Schemas 定义数据结构,Models 进行数据库操作,并允许我们添加静态方法以扩展功能。通过 Mongoose,Node.js 开发者可以更轻松地与 MongoDB 数据库交互,同时保持代码的整洁和模块化。了解和熟练掌握 Mongoose 的这些核心概念,将有助于构建高效、健壮的 MongoDB 应用程序。






























剩余6页未读,继续阅读


- 粉丝: 11
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 本库是个基于python的工具集,用于记录数据到文件。 使用方便,代码简洁, 是一个可靠、省心且实用的工具。 支持多线程同时写入。.zip
- 本科毕业设计,基于python的图像复制粘贴篡改识别软件。.zip
- 本项目是基于计算机视觉的端到端交通路口智能监控系统.采用的设计架构由SRS
- 碧蓝航线ios平台自动脚本,基于python+opencv+facebook_wda实现.zip
- 毕业设计中基于给定微博数据的反作弊识别,用python开发。.zip
- 毕业设计项目,基于深度学习的实时语义分割算法研究,python实现。.zip
- 对基于python的微博爬虫进行重写,重写语言:java.zip
- 此框架是基于Python+Pytest+Requests+Allure+Yaml+Json实现全链路接口自动化测试
- 程序语言课程作业在线评测平台(实现Java、C、Python的选择、填空、代码题在线评测),基于SpringBoot+Layui+MySQL实现.zip
- 非官方的科大讯飞语音合成(用于朗读,配音场景)python API (基于官方demo增加了:超过2000字上限自动分割再合并音频的功能).zip
- 非官方的简易中国铁路列车运行图系统,基于Python + PyQt5
- 超市POS销售与后台管理系统_商品录入收银业务会员管理进货销售库存人员权限断网收银断电保护_实现超市前台POS销售商品扫描条形码输入收银计算找零打印清单会员折扣累计消费以及后台管理.zip
- 俄罗斯方块闯关版,基于Python实现.zip
- 该项目是基于Python和数据库实现的学生信息管理系统.zip
- 该仓库为agv系统调度软件的前后端实现。项目基于fastapi(python后端框架)和vue2实现了RESTful风格的前后端分离.zip
- 该项目是基于Scrapy框架的Python新闻爬虫,能够爬取网易,搜狐,凤凰和澎湃网站上的新闻,将标题,内容,评论,时间等内容整理并保存到本地.zip


