简介

之前我们都是通过 shell 来完成对数据库的各种操作的,在开发中大部分时候我们都需要通过程序来完成对数据库的操作。

而 Mongoose 就是一个让我们可以通过 Node 来操作 MongoDB 的模块。

Mongoose 是一个对象文档模型(ODM)库,它对 Node 原生的 MongoDB 模块进行了进一步的优化封装,并提供了更多的功能。

在大多数情况下,它被用来把结构化的模式应用到一个 MongoDB 集合,并提供了验证和类型转换等好处。

mongoose 的好处

可以为文档创建一个模式结构(Schema)

可以对模型中的对象/文档进行验证

数据可以通过类型转换转换为对象模型

可以使用中间件来应用业务逻辑挂钩

比 Node 原生的 MongoDB 驱动更容易

新的对象

mongoose 中为我们提供了几个新的对象– Schema(模式对象)

Schema 对象定义约束了数据库中的文档结构– Model

Model 对象作为集合中的所有文档的表示,相当于 MongoDB 数据库中的集合 collection– Document

Document 表示集合中的具体文档,相当于集合中的一个具体的文档

通过 mongoose 连接 MongoDB

使用 Mongoose 必须先安装 mongoose 包– npm install mongoose

加载 Mongoose– const mongoose = require("mongoose")

连接数据库– mongoose.connect("mongodb://地址")– 地址例子:mongodb://127.0.0.1/mg_test

断开连接– mongoose.disconnect()

connection

一旦连接了 MongoDB 数据库,底层的 Connection 对象就可以通过 mongoose 模块的 conection 属性来访问。

connection 对象是对数据库连接的抽象,它提供了对象连接、底层的 Db 对象和表示结合的 Model 对象的访问。

并且可以对 connection 对象上的一些事件进行监听,来获悉数据库连接的开始与端开。

比如,可以通过 open 和 close 事件来监控连接的打开和关闭。

Schema 模式对象

使用 Mongoose 你必须经常定义模式。

模式为集合中的文档定义字段和字段类型。

如果你的数据是被结构化成支持模式的,这是非常有用的。

简单来说,模式就是对文档的约束,有了模式,文档中的字段必须符合模式的规定。

否则将不能正常操作。

定义模式

模式为集合中的文档定义字段和字段类型。

对于在模式中的每个字段,你都需要定一个特定的值类型。受支持的类型如下:– String– Number– Boolean– Array– Buffer– Date– ObjectId 或 Oid– Mixed

需要为你计划使用的每个不同的文档类型都定义一个模式。

创建模式定义

模式需要通过 mongoose 的 Schema 属性来创建,这个属性是一个构造函数。– new Schema(definition,option)

definition(描述模式)

options 配置对象,定义与数据库中集合的交互

options 常用选项

autoIndex– 布尔值,开启自动索引,默认 true

bufferCommands– 布尔值,缓存由于连接问题无法执行的语句,默认 true

capped– 集合中最大文档数量

collection– 指定应用 Schema 的集合名称

id– 布尔值,是否有应用于_id 的 id 处理器,默认 true

_id– 布尔值,是否自动分配 id 字段,默认 true

strict– 布尔值,不符合 Schema 的对象不会被插入进数据库,默认 true

Model 模型对象

一旦定义好了 Schema 对象,就需要通过该 Schema 对象来创建 Model 对象。

一旦创建好了 Model 对象,就会自动和数据库中对应的集合建立连接,以确保在应用更改时,集合已经创建并具有适当的索引,且设置了必须性和唯一性。

Model 对象就相当于数据库中的集合,通过 Model 可以完成对集合的 CRUD 操作。

Model 模型对象

创建模型对象需要使用 mongoose 的 model()方法,语法如下:– model(name, [schema], [collection] , [skipInit])

name 参数相当于模型的名字,以后可以同过 name 找到模型。

schema 是创建好的模式对象。

collection 是要连接的集合名。

skipInit 是否跳过初始化,默认是 false。

一旦把一个 Schema 对象编译成一个 Model 对象,你就完全准备好开始在模型中访问、添加、删除、更新和删除文档了。也就是说有了模型以后我们就可以操作数据库了。

Model 对象的方法

remove(conditions, callback)

deleteOne(conditions, callback)

deleteMany(conditions, callback)

find(conditions, projection, options, callback)

findById(id, projection, options, callback)

findOne(conditions, projection, options, callback)

count(conditions, callback)

create(doc, callback)

update(conditions, doc, options, callback)

等等

Document 文档对象

通过 Model 对数据库进行查询时,会返回 Document 对象或 Document 对象数组。

Document 继承自 Model,代表一个集合中的文档。

Document 对象也可以和数据库进行交互操作。

Document 对象的方法

equals(doc)

id

get(path,[type])

set(path,value,[type])

update(update,[options],[callback])

save([callback])

remove([callback])

isNew

isInit(path)

toJSON()

toObject()

关键词:前端培训


江湖大侠
116 声望13 粉丝

引用和评论

0 条评论