【mongoose】3.阅读官方文档
1. Models
上一篇笔记讲到了mongoose的基本用法,本次来讲一下oModel
中的一些方法怎么用。
其实,有了Model我们就可以对数据库进行增删改查的操作了。
对于Model的方法,我们可以通过查阅官方的API文档来获得最新和最全面的了解: 官方文档API

这里讲一些看文档需要注意的点。Model.xxx
风格的API表示Model构造函数的方法,可以用于创建对象。
Model#xxx
风格的API表示Model创建的对象调用的方法,也就是文档对象调用的方法,当然我发现官方现在好像是这样写了:Object.prototype.xxx()
。
这里讲几个常用的API,自己去官方文档取经吧: -
Model.find()
- Model.create()
-
Model.findOne()
实际上,关于find
的API就不少,实际使用还需自己根据情况来决定:

2. Document
2.1 添加
Document
是Model
的一个示例,通过Model
查询到的结果都是Document
。
我们其实可以直接创建一个Document
(文档对象)其实就是最开始我说的官方推荐的写法:
1
2
3
4const student = new StuModel({
name: "Sy",
age: 18
})
将这个文档对象打印出来就是: 1
2
3
4
5
6
7{
name: 'Sy',
age: 15,
gender: 'male',
address: 'XJUFE',
_id: new ObjectId('67e3ecde490b511fb8c53cd2')
}
很容易发现,此时文档并没有被插入到数据库,仅仅是放到了内存中。
我们来讲他插入到数据库中(document#save()
):
1
docs.save();
这里讲一下在我的Node.js项目中经常突然乍现的一个Bug:在运行项目后有时会突然报错
1
ReferenceError: require is not defined
查了一下是因为node
更新的原因,现在默认要求用import
语法,如果还是想要用require
就需要:
1
2import { createRequire } from 'module';
const require = createRequire(import.meta.url);
所以在保存文件时有两种方法: 1
2docs.save();
Model.create({});
2.2 修改
修改docs也很简单,第一种方法当然是官方的API
方法。
但其实也可以通过.
分隔符来修改文档的属性:
1
2docs.name = "Syyyo900";
await docs.save();
2.3 get和set
文档提供了一些很快捷的方法来直接得到文档的内容: -
doc.get('age', String)
获取年龄并将数据转为字符串类型,第二个参数可选
文档还提供了set
方法,可以快速修改文档的内容,有多种写法,可以参考API文档。
2.4 其他
文档有一个doc.toJSON()
方法,可以将该文档转为JSON
对象。
用doc.toObject()
可以让文档变成一个普通的Object
对象,但是会让所有文档的方法失效。
所以,只有在特殊情况下才会使用,比如需要删除文档中的敏感数据,想要调用delete docs.address
来隐藏地址,就只能通过该方法来实现。